Возникла проблема с доступом к нулевому указателю в Java - PullRequest
1 голос
/ 03 апреля 2011
if(key == '1'){//insert at ->right.right
    BinaryNode tempPointer = root;

    while(tempPointer != null){
        tempPointer = tempPointer.right;
    }
    BinaryNode newNode = new BinaryNode(x);
    newNode.right = null;
    newNode.left = null;
    size++;
    lastNode = newNode;
    newNode.parent = tempPointer;
    tempPointer.right = newNode;
}

Он постоянно говорит, что termPointer может быть только нулевым в этом месте.Хотя я не могу понять, почему.

Это также не удается:

newNode.parent = tempPointer.parent; //'tempPointer can only be null here'
tempPointer = newNode;

Ответы [ 2 ]

8 голосов
/ 03 апреля 2011

Ваш цикл while закончится только тогда, когда tempPointer равен null. Вы не устанавливаете tempPointer на любое другое значение после цикла, поэтому оно останется null до конца функции.

2 голосов
/ 03 апреля 2011

На самом деле вам нужен указатель предварительного просмотра, который заглядывает справа от текущего узла.Примерно так:

BinaryNode tempPointer = root;
lookaheadPointer = root;
while(lookaheadPointer != null) {
  tempPointer = lookaheadPointer;
  lookaheadPointer = tempPointer.right;
}

В вашем текущем коде tempPointer равен нулю в конце цикла, как указано @ Julien

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...