尝试将节点添加到链接列表时出现Nullpointer异常

时间:2015-08-17 17:15:57

标签: java linked-list

我有这段代码将节点添加到链接列表中:

    public static void main(String[] args){
  linkedList1 newLinkedList = new linkedList1(head);
  Node second = newLinkedList.new Node(6,null);
  Node head = newLinkedList.new Node(5, second);
  Node third = newLinkedList.new Node(8, null);
  newLinkedList.addLast(third);


  }

我的主要方法有以下几点(请记住,我不太确定我是否正确初始化链表):

{"phone":"8 920 034-00-88"}

它给我这个错误:线程中的异常" main" java.lang.NullPointerException - >发生在addLast,然后在我的方法中的while()循环。任何帮助找出原因?

3 个答案:

答案 0 :(得分:0)

您还没有显示完整的源代码,所以我只是在这里猜测,但...... newLinkedList指向class linkedList1的实例。我想在那个课程中你已经定义了一个名为head的memober变量。我假设变量初始化为null。在main方法中,您要创建newLinkedList的实例,其中一个实例分配给 LOCAL 变量head。该变量不是与您在课程中定义的变量相同,这是您在其中引用的变量:

Node currentLast = head;

因此,currentLastnull,稍后会导致您的例外。

您要做的是:addLast应首先检查head是否为null。如果是,则应将传递的节点分配给head,使其成为第一个节点。如果没有,它应该循环。忽略另一个答案,你的循环没问题。

答案 1 :(得分:0)

显然静态变量head为空。您正在重新初始化main方法中的新head节点,将其更改为静态变量head。以下是解决方案

public static void main(String[] args){   
    linkedList1 newLinkedList = new linkedList1(head);
    Node second = newLinkedList.new Node(6,null);
    head = newLinkedList.new Node(5, second);
    Node third = newLinkedList.new Node(8, null);
    newLinkedList.addLast(third);
}

答案 2 :(得分:-2)

我认为问题是因为你在一个while循环中调用了两次getNextNode方法。尝试做这样的事情。

Node node;
while ((node=currentLast.getNextNode()!=null){
        //do stuff with node
}

这有帮助,因为现在你只调用一次getNextNode,所以你不会遇到NullPointerExceptions