我有一个文件,每行包含{-1,0,1,2,3}的值。它看起来像这样:
我想将所有这些值放在int类型的数组中,如下所示:
int[] linesValue = new int[NUMBER_OF_LINES];
int i;
for (i = 0; i < NUMBER_OF_LINES; i++)
{
string tmpVal = reader.ReadLine();
linesValue[i] = Convert.ToInt32(tmpVal);
}
“NUMBER_OF_LINES”是私有int,“reader”是StreamReader。 当我运行代码时它给我错误:“输入字符串格式不正确” 我试过reader.ReadLine()。ToString()但它仍然不起作用。 如果你们能帮我解决这个问题,我真的很感激。
答案 0 :(得分:3)
您在string
中将最后一行或换行符作为空字符串获取,并且无法转换为int
,因此例外。只需为string.IsNullOrWhiteSpace
添加支票,如:
{
string tmpVal = reader.ReadLine();
if(!string.IsNullOrWhiteSpace(tmpVal))
{
linesValue[i] = Convert.ToInt32(tmpVal);
}
}
同时确保使用此检查维护index
,因此由于索引增量,您可能最终在数组中出现空条目。
您还可以使用File.ReadLines
并将每行解析为int
数组,如:
int[] array = File.ReadLines("filePath")
.Where(r => !string.IsNullOrWhiteSpace((r)))
.Select(r => int.Parse((r)))
.ToArray();
寻找使用int.TryParse
方法。如果解析失败,TryParse方法组不会引发异常。它们返回bool
,指示解析是否成功,并在out
参数中提供解析后的值。