Рисование изображения узлов и того, куда они указывают - PullRequest
0 голосов
/ 25 сентября 2019

Я должен объяснить визуально, как появляются четыре узла после ввода следующего кода:

public class Node
{

    //These two lines are provided
    public Object Data = null;
    public Node Next = null;

    public static void main(String[] args)
    {
        Node a = new Node();
        Node b = new Node();
        Node c = new Node();
        Node d = new Node();

        //These four lines must be used
        b = a.Next;
        //c = b.Next;                //Gives NullPointer error
        //b.Data = c.Next.Data;      //Gives NullPointer error
        c.Next = a;
    }
}

Из того, над чем я работал до сих пор, кажется, что:

  • A указывает на узел (без изменений)
  • B превращается в нулевой объект
  • Узел C указывает на A
  • D указывает на узел (без изменений)

(This is the image Это изображение, на которое я ссылаюсь из моего отладчика)

Это нормально для двух строк выше, чтобы выдавать ошибки NullPointer?Также мои догадки вроде близки к картине?Спасибо за помощь

1 Ответ

1 голос
/ 25 сентября 2019

Учитывая, что Data и Next каждого Node объекта равны нулю, давайте рассмотрим его в пошаговом пошаговом руководстве, начиная с вашей основной функции.(для этих имен переменных рекомендуется использовать camelCase https://en.wikipedia.org/wiki/Camel_case)

Node A = new Node(); 
Node B = new Node(); 
Node C = new Node(); 
Node D = new Node(); // Defines non-null A, B, C, and D Nodes

B = A.Next; // B = null; because the Next and Data of each node is null

C = B.Next; // C = (a non existent) b.next causing a null pointer error
B.Data = C.Next.Data; B.Data = c.Next.Data; // c.next == null. null.Data doesn't exist. 

C.Next = A; // C.Next = A; A == new Node(); no error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...