我的问题是在我的函数结束时使用while循环
public void insertInOrder(int i){
Node temp;
if(head == null){
head = new Node(i,null);
}
else if (head.getData() > i){
temp = new Node(i,head);
head = temp;
}
else {
Node curr = head;
while (curr.getNext() != null && curr.getNext().getData() <= i);
while(curr.getNext().getData() <= i)
curr = curr.getNext();
temp = new Node(i,curr.getNext());
curr.setNext(temp)
为了进入while循环,我需要让我的链表中的下一个节点不等于null,它必须小于i。这有效,直到我发送一个导致我的列表结束的值,并得到一个空指针异常错误,因为第二个语句无法评估。我怎么能绕过这个?
答案 0 :(得分:3)
我认为你有一个不应该存在的尾随分号:
---------------------------------------------------------------v
while (curr.getNext() != null && curr.getNext().getData() <= i);
while(curr.getNext().getData() <= i)
curr = curr.getNext();
删除它,我认为你的代码应该可行。
这种错误是你应该总是使用花括号的原因之一,即使它们似乎没必要。所以我会像这样重写while循环:
while (curr.getNext() != null && curr.getNext().getData() <= i) {
while(curr.getNext().getData() <= i) {
curr = curr.getNext();
}
}
答案 1 :(得分:0)
删除语句末尾的分号
while (curr.getNext() != null && curr.getNext().getData() <= i);
&lt; ----