【问题标题】:Reading user input into a list through a class member通过类成员将用户输入读入列表
【发布时间】:2014-10-28 22:35:48
【问题描述】:

我在任何地方都在努力寻找我的问题的答案,所以我不希望这是重复的,如果它是我的错!

我已经使用类设置了一项任务,这是我第一次使用类和列表,请原谅我的无知。

我想通过用户输入将读入的数据存储到我的一个班级成员(我必须在整个任务中使用班级成员)并将其添加到我创建的列表中。我尝试了很多方法,但现在我没有想法。程序让我输入第一个值(make),但编译器随后抛出错误:

“在 mscorlib.dll 中发生了‘System.ArgumentOutOfRangeException’类型的未经处理的异常” “附加信息:索引超出范围。必须为非负数且小于集合的大小。”

  private static void AddCar(Vechicle _Motor)
  {
      int number = 1;
      Console.Clear();
      List<Vechicle> MotorDeats = new List<Vechicle>();
      Console.Write("/////////////////////ADDING CAR DETAILS\\\\\\\\\\\\\\\\\\\\\\\\");
      Console.Write("\n\nEnter Make: ");
      _Motor.Make = Console.ReadLine();
      MotorDeats[number].Add(_Motor.Make);
      Console.Write("\n\nEnter Model: ");
      _Motor.Model = Console.ReadLine();
      MotorDeats[number].Add(_Motor.Model);
      Console.Write("\n\nEnter Year: ");
      _Motor.Year = Console.ReadLine();
      MotorDeats[number].Add(_Motor.Year);

      Console.WriteLine(string.Join(", ", MotorDeats.Select(MotorDeat => MotorDeats.ToString())));
      Console.ReadKey();


  }

【问题讨论】:

标签: c# list class


【解决方案1】:
Vechicle v = new Vechicle();
v.Make = 'Ford';
v.Year = 1990;
v.Model = 'Sedan'
MotorDeats.Add(v);

您不会为了添加项目而为列表编制索引。它会自动将其添加到列表的末尾。

【讨论】:

    【解决方案2】:

    将您的列表传递给AddCar 会更有意义,因为您会丢失您的MotorDeats

    private static void AddCar(List<Vehicle> vehicles)
    {
    
          Console.Clear();
          Console.Write("/////////////////////ADDING CAR DETAILS\\\\\\\\\\\\\\\\\\\\\\\\");
          var v = new Vehicle();
          Console.Write("\n\nEnter Make: ");
          v.Make = Console.ReadLine();
    
          Console.Write("\n\nEnter Model: ");
          v.Model = Console.ReadLine();
    
          Console.Write("\n\nEnter Year: ");
          v.Year = Console.ReadLine();
    
          vehicles.Add(v);
          Console.WriteLine(string.Join(", ", vehicles.Select(_ => _.ToString())));
          Console.ReadKey();
    
    
    }
    

    这样您就可以收集您的汽车。或者你可以像这样创建循环

    while (str != "n")  
    {
    
    
        // your code
         Console.Write("Add another Car? (Y/N)");
         string result = Console.ReadLine();
         if (result.ToLower() == "n")
            str = "n";
    }
    

    这将允许您放置多辆车

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 2020-06-07
      • 1970-01-01
      相关资源
      最近更新 更多