我有这段代码将节点添加到链接列表中:
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()循环。任何帮助找出原因?
答案 0 :(得分:0)
您还没有显示完整的源代码,所以我只是在这里猜测,但......
newLinkedList
指向class linkedList1的实例。我想在那个课程中你已经定义了一个名为head
的memober变量。我假设变量初始化为null
。在main
方法中,您要创建newLinkedList
的实例,其中一个实例分配给 LOCAL 变量head
。该变量不是与您在课程中定义的变量相同,这是您在其中引用的变量:
Node currentLast = head;
因此,currentLast
为null
,稍后会导致您的例外。
您要做的是: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