2013-02-21 29 views
0

我的問題是與while循環在我的功能While循環使空EXCETION指針,並不會進入

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。這工作,直到我發送一個值,導致我的列表結束,我得到一個空指針異常錯誤,因爲第二個語句無法評估。我怎樣才能解決這個問題?

回答

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(); 
     } 
} 
0

在你的發言

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

的末尾刪除分號