关于c#:类型’System.FormatException’的未处理异常附加信息:输入字符串格式不正确

An unhandled exception of type 'System.FormatException' Additional information: Input string was not in a correct format

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
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]));  
}

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

An unhandled exception of type 'System.FormatException' occurred in
mscorlib.dll Additional information: Input string was not in a
correct format.


错误很明显,说明不能将非数字字符串解析为整数。尽量使用int.TryParse

1
2
3
4
5
int val;
if (int.TryParse(arry[i], out val))
{
    arryint.Add(val);
}

正如雷曼和托尼·科斯特拉克在上面所说,错误来自

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

为了更干净,我将您的代码改写如下(在我看来),您不需要创建字符串列表来存储输入数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    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);
    }


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

好的做法是使用int.TryParse("some string", out int value),台盼会根据天气情况返回truefalse,它是否为整数,您可以使用if语句来处理它。

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

希望这有帮助。