while循环给出null异常指针,不会进入

时间:2013-02-21 01:25:57

标签: java while-loop boolean

我的问题是在我的函数结束时使用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。这有效,直到我发送一个导致我的列表结束的值,并得到一个空指针异常错误,因为第二个语句无法评估。我怎么能绕过这个?

2 个答案:

答案 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; ----