通过类成员将用户输入读入列表

时间:2014-10-28 22:35:48

标签: c# list class

我努力在任何地方找到问题的答案,所以我不希望这是一个重复,如果是的话,我的不好!

我已经使用类设置了一个任务,这是我第一次使用类&列出如此原谅我的无知。

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

"类型' System.ArgumentOutOfRangeException'的无法例外;发生在mscorlib.dll" "其他信息:指数超出范围。必须是非负数且小于集合的大小。"

  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();


  }

2 个答案:

答案 0 :(得分:2)

Vechicle v = new Vechicle();
v.Make = 'Ford';
v.Year = 1990;
v.Model = 'Sedan'
MotorDeats.Add(v);

您不要将列表编入索引以添加项目。它会自动将其添加到列表的末尾。

答案 1 :(得分:0)

将您的列表传递给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";
}

这将允许您放置多辆车