转换字符串和整数的问题

时间:2016-11-28 00:24:34

标签: c# windows visual-studio console

我是c#development的新手,我正在尝试创建一个汽车控制台应用程序。我正在努力的部分是,我正在创建一个列表,让用户输入汽车的价值,一旦用户完成,他/她应该只能输入以显示所有添加的汽车的价值起来。

以下是编译器的错误:

  

未处理的类型' System.FormatException'发生在mscorlib.dll中附加信息:输入字符串的格式不正确。

以下是我收到错误的代码:

Console.Clear();
List<int> myCars = new List<int>();

Console.WriteLine("Enter the car into the lot");
int input = int.Parse(Console.ReadLine());
myCars.Add(input);

while (input.ToString() != "") //The != is not equal to 
{
    Console.WriteLine("Please enter another integer: ");
    input = int.Parse(Console.ReadLine()); //This doesent work I dont know why
    int value;
    if (!int.TryParse(input.ToString(), out value))
    {
        Console.WriteLine("Something happened I dont know what happened you figure it out I dont want to");
    }
    else
    {
        myCars.Add(value);
    }
}

if (input.ToString() == "Done")
{
    int sum = 0;
    foreach (int value in myCars)
    {
        sum += value;
        Console.WriteLine("The total of all the cars on the lot are : " + " " + value.ToString());
    }
    Console.ReadLine();
}

2 个答案:

答案 0 :(得分:0)

错误是因为“Done”无法解析为整数。 你也有一些语义错误。这是更正后的代码:

        Console.Clear();
        List<int> myCars = new List<int>();

        Console.WriteLine("Enter the car into the lot");
        string input = Console.ReadLine();
        int IntValue;
        if (int.TryParse(input, out IntValue))
        {
            myCars.Add(IntValue);
        }

        while (input != "Done") //The != is not equal to 
        {
            Console.WriteLine("Please enter another integer: ");
            input = Console.ReadLine();

            if (int.TryParse(input, out IntValue))
            {
                myCars.Add(IntValue);
            }

        }

        int sum = 0;
        foreach (int value in myCars)
        {
            sum += value;
        }
        Console.WriteLine("The total of all the cars on the lot are : " + " " + sum.ToString());
        Console.ReadLine();

答案 1 :(得分:0)

您使用的Int32.Parse()方法会抛出FormatException,以防您尝试解析不是整数的值,例如一个字符串(在你的情况下为“完成”) https://msdn.microsoft.com/en-us/library/b3h1hf19(v=vs.110).aspx

你应该使用Int32.TryParse(),它会在你的解析失败时返回false https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx