我正在创建一个排序链接列表,其中整数按升序存储。我在使用add()方法时遇到了麻烦。它在我添加第一个节点时起作用,但是当我尝试添加另一个节点时它会给我NullPointerException
这是我的Node类代码:
public class SortedList {
Node head;
public int listCount;
public SortedList() {
listCount = 0;
this.head=null;
}
public void add(int num) {
Node newNode = new Node(num);
Node temp = head;
if (head == null) {
head = newNode;
listCount++;
System.out.println("Node with data "+num+" was added.");
} else {
while (temp.value <= num) { //the compiler shows NullPointerException here in this line
temp = temp.next;
}
if (temp.next==null) {
temp.next=newNode;
listCount++;
System.out.println("Node with data "+num+" was added.");
} else {
newNode.next=temp.next.next;
temp.next=newNode;
listCount++;
System.out.println("Node with data "+num+" was added.");
}
}
}
这是我的SortedList类的一部分:
switch
它表示java.lang.NullPointerException位于“while(temp.value&lt; = num)”行
答案 0 :(得分:0)
考虑你的程序的这些行:
value
每次循环播放时,都会访问num
以检索其next
,如果该值小于或等于temp.next
,则转到null
1}} node。
但是,此代码中没有任何内容可以处理当您点击&#34; end&#34;您的排序列表(因此null
是temp
)。发生这种情况时,temp.value
被分配给temp
,然后再次检查循环条件,while (temp.value <= num && temp.next != null)
抛出NullPointerException。
你究竟如何解决这个问题有点偏好。可能你想在{{1}}保持列表尾部时停止。所以也许你可以把循环条件改为
{{1}}