NullReferenceException при чтении из файла

Я должен считать файл, структурированный как это:

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');

Кто-либо может предоставить решение?

1
задан Cœur 26 December 2018 в 06:53
поделиться

1 ответ

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

string line = reader.ReadLine();

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

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

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

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

iMap = new int[iMapHeight, iMapWidth];
2
ответ дан 3 September 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: