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 を使用してマップ配列に挿入すると仮定します。

私はそれを正しくやっていますか?現時点では、例外が発生しています。

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 に答える