2010-05-08 8 views
1

мне нужно прочитать файл структурированную, как это:NullReferenceExeption при чтении из файла

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}, 
}; 

Надеюсь, вы видите, что я пытаюсь здесь. Я был смущен, как сделать это так, я спросил здесь, на SO, но код, который я получил от него получает эту ошибку:

Object reference not set to an instance of an object.

Я довольно новыми для этого так что у меня нет идея, как это исправить ... Я только едва знаю код:

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

Где вы создаете объект iMap? В конструкторе? –

ответ

2

На этой линии, StreamReader.ReadLine может возвращать нулевое значение, если конец файла достигнут:

string line = reader.ReadLine(); 

Вы должны проверить для этого условия и обработать его соответствующим образом.

string line = reader.ReadLine(); 
if (line == null) 
{ 
    // Handle the error. 
} 

Также убедитесь, что ваш вход имеет не менее iMapHeight * iMapWidth линий.

Вы также должны убедиться, что ваш массив инициализирован. Например, добавьте эту строку в начало вашего метода:

iMap = new int[iMapHeight, iMapWidth]; 
Смежные вопросы