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 将根据天气返回true
或false
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);
}