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附加信息:输入字符串不在 格式正确。
答案 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将根据天气返回true
或false
或不是整数,您可以使用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);
}