Почему NPE в 2d Array? - PullRequest
       19

Почему NPE в 2d Array?

0 голосов
/ 01 февраля 2012

Почему я получаю NPE по заданию:

    mPyramid[row][column] = temp;

Вот мой код:

    Block temp;
    Block[][] pyramid = new Block[mInput.length][];

    for (int i = 0; i < pyramid.length; i++) {
        pyramid[i] = new Block[mInput[i].length];
        for (int j = 0; j < pyramid[i].length; j++) {
            pyramid[i][j] = new Block();
        }
    }

    for (int row = 1; row < mInput.length; row++) {
        for (int column = 0; column < mInput[row].length; column++) {
            temp = new Block(mInput[row][column], null, null);
            mPyramid[row][column] = temp;

            setParents(row, column);
            temp.setPathNode(calculateDistance(temp));

        }
    }
}

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

Кажется, вы создаете локальную переменную pyramid, а затем ссылаетесь на mPyramid.

0 голосов
/ 01 февраля 2012

Потому что либо mPyramid не инициализировано, либо подмассив mPyramid[row] не инициализирован.

Полагаю, вы во втором случае.Для немедленной инициализации mPyramid с высотой и шириной вы можете использовать:

mPyramid = new Block[height][width]; // Swap height and width if you prefer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...