类型 'System.FormatException' 的未处理异常 其他信息:输入字符串格式不正确


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]));  
}

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

类型为"系统格式异常"的未处理异常发生在 mscorlib.dll 其他信息:输入字符串不在 格式正确。

错误非常明显,告诉您无法将非数字字符串解析为整数。尝试使用int.TryParse

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

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

好的做法是使用 TryParse 将根据天气返回truefalse int.TryParse("some string", out int value),或者它是否是一个整数,您可以使用 if 语句根据需要进行处理。

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

希望这有帮助。

正如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);
    }

最新更新