“System.FormatException”类型的未处理异常附加信息:输入字符串的格式不正确

时间:2018-01-07 15:53:53

标签: c# visual-studio

bool emptyline = false;
List<string> arry = new List<string>();
List<int> arryint = new List<int>();
for (int i = 0; emptyline == false; i++)
{
    arry.Add(Console.ReadLine());
    if (arry[i] == string.Empty) { emptyline = true;   }
     arryint.Add(int.Parse(arry[i]));  
}

我尝试运行时会弹出此错误

  

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

3 个答案:

答案 0 :(得分:1)

错误非常清楚,告诉您不能将非数字字符串解析为整数。尝试使用int.TryParse

int val;
if (int.TryParse(arry[i], out val))
{
    arryint.Add(val);
}

答案 1 :(得分:0)

查看代码,似乎传递给int.Parse()的字符串不是数字。

好的做法是使用int.TryParse("some string", out int value) TryParse将根据天气返回truefalse或不是整数,您可以使用if语句按照您的意愿处理

此外,您不应该使用array[i] == string.Empty,而是使用字符串函数string.IsNullOrEmpty(array[i])

希望这有帮助。

答案 2 :(得分:0)

正如Rainman和Toni Kostelac所说,错误来自

arryint.Add(int.Parse(arry[i]));

为了更清洁,我将代码重写为下文(在我看来),并且您不需要创建字符串列表来存储输入数据:

    static void Main(string[] args)
    {
        List<int> lstVal = new List<int>();

        for (;;)
        {
            string str = Console.ReadLine();
            if (str.Trim().Equals(""))
            {
                break;
            }
            else
            {
                int iVal;
                if (int.TryParse(str, out iVal))
                {
                    lstVal.Add(iVal);
                }
            }
        }

        Console.WriteLine("Input value : ");

        foreach (int iVal in lstVal)
        {
            Console.WriteLine("{0}", iVal);
        }

        Console.ReadKey(true);
    }