1

我对 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 将其插入到 map 数组中。

我做对了吗?目前,我遇到了一个例外:

NullReferenceException 未处理:对象引用未设置为对象的实例。

我也阅读了 MS 的文档。偶然发现了许多类似的问题,但没有一个能解决我的问题。

任何帮助将不胜感激!

4

1 回答 1

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也可能失败

于 2012-05-15T11:59:00.647 回答