我需要读取这样的结构文件:
01000
00030
00500
03000
00020
把它放在这样的数组中:
int[,] iMap = new int[iMapHeight, iMapWidth] {
{0, 1, 0, 0, 0},
{0, 0, 0, 3, 0},
{0, 0, 5, 0, 0},
{0, 3, 0, 0, 0},
{0, 0, 0, 2, 0},
};
希望你能看到我在这里要做的事情。我很困惑如何做到这一点所以我在这里问过,但是我从中得到的代码得到了这个错误:
对象引用未设置为 对象的实例。
我对此很陌生,所以我没有想法如何修复它......我只知道代码:
protected void ReadMap(string mapPath)
{
using (var reader = new StreamReader(mapPath))
{
for (int i = 0; i < iMapHeight; i++)
{
string line = reader.ReadLine();
for (int j = 0; j < iMapWidth; j++)
{
iMap[i, j] = (int)(line[j] - '0');
}
}
}
}
我收到错误的行是:
iMap[i, j] = (int)(line[j] - '0');
任何人都可以提供解决方案吗?
答案 0 :(得分:2)
在此行上,如果到达文件末尾,StreamReader.ReadLine
可以返回null:
string line = reader.ReadLine();
您应检查此情况并妥善处理。
string line = reader.ReadLine();
if (line == null)
{
// Handle the error.
}
还要确保您的输入至少有iMapHeight * iMapWidth
行。
您还应该确保您的阵列已初始化。例如,将此行添加到方法的开头:
iMap = new int[iMapHeight, iMapWidth];