0

我的问题是函数末尾的 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。这一直有效,直到我发送一个导致列表末尾的值并且我得到一个空指针异常错误,因为第二个语句无法评估。我怎样才能解决这个问题?

4

2 回答 2

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();
        }
 }
于 2013-02-21T01:38:32.783 回答
0

删除语句末尾的分号

while (curr.getNext() != null && curr.getNext().getData() <= i);<----

于 2013-02-21T01:40:36.723 回答