我在使用StreamReader时遇到了一些问题。首先,下面是我的简单代码:
using (StreamReader reader = new StreamReader("Content/Levels/" + mapName + ".txt"))
{
for (int i = 0; i < 20; i++)
for (int j = 0; j < 36; j++)
{
string[] objLoc = reader.ReadLine().Split(',');
map[i, j] = Convert.ToInt32(objLoc[j]);
}
}
所以,我有一个包含行和列的文本文件,就像一个数组一样。每个位置都有一个整数。这些整数由,字符分隔。
我想从文本文件中的位置读取每个字符,然后将其转换为实际的整数并将其添加到单独的数组中。我将从该数组中读取,以便在我向您展示的代码之后构建地图。
作为C#和编程的新手,我假设我的代码实际上使用Split方法从一行读取每个位置,然后我使用read char将其插入到地图数组中。
我做得对吗?目前,我有一个例外:
NullReferenceException未处理:对象引用未设置为对象的实例。
我也阅读了MS的文档。偶然发现了许多类似的问题,但没有解决我的问题。
任何帮助都将受到高度赞赏!
答案 0 :(得分:1)
您正在内循环中读取一个全新的行,这意味着您的行快速耗尽。你需要在外部循环中读取一个新行,并循环遍历内部循环中的分割结果(单个元素)
尝试类似
的内容using (StreamReader reader = new StreamReader("Content/Levels/" + mapName + ".txt"))
{
for (int i = 0; i < 20; i++) {
string[] objLoc = reader.ReadLine().Split(',')
for (int j = 0; j < 36; j++) {
map[i, j] = Convert.ToInt32(objLoc[j]);
}
}
}
注意:如果行包含的元素不足或文件太短,则需要检查错误。转换为int
可能也会失败