2014-11-09 65 views
0

我對當前程序有困難。當我嘗試檢查節點(一個對象)是否爲空時,我得到一個NullPointerException,雖然我允許你這樣做。我得到的例外在這個if語句當我與null進行==比較時得到NullPointerException

 else if(direction == 0) { 
      cursor = cursor.getParent(); 
      if(cursor.getRight() != null) 
       direction = 1; 
      else 
       direction = 0; 
     } 

我得到第三行的異常'如果(cursor.getRight()!= null)的,我已經試過多種方式來寫,仍然得到相同的異常。 ('if!(null!= cursor.getRight)'和'if(!(null == cursor.getRight())' getRight()方法返回下一個節點(對象)的實例,並在該對象被初始化

+1

'cursor.getParent();'很可能返回null因此NPE。 – 2014-11-09 04:01:00

+1

那麼,如果一個'遊標'沒有父(即「最大」遊標(如果你喜歡這樣命名))會發生什麼?然後'cursor'爲'null','cursor.getRight()'將導致'NullPointerException'。 – Tom 2014-11-09 04:01:30

+0

是的,謝謝。我的'cursor.getParent()'返回null,因爲每個節點的父節點沒有正確設置。 – rangeme 2014-11-09 17:46:18

回答

1
else if(direction == 0) { 
      cursor = cursor.getParent(); 
      if(cursor.getRight() != null) 
       direction = 1; 
      else 
       direction = 0; 
     } 

的原因,你得到了NullPointerException是因爲cursor設置爲null,因此,當您嘗試cursor.getRight(),它的計算結果null.getRight()因此例外。

我建議你試試下面的代碼:

else if(direction == 0) { 
      cursor = cursor.getParent(); 
      if(cursor!=null && cursor.getRight() != null) 
       direction = 1; 
      else 
       direction = 0; 
     } 
1

我想你可能會發現「cursor.getParent()」返回null,因此在第二行設置「cursor」爲null,然後當第三行嘗試調用「getRight )「空對象,你會得到一個空指針異常

0

光標很可能被設置爲null在第二行getParent然後你試圖訪問空元素的方法首先檢查,以確保光標不爲空然後檢查cursor.getRight()是否爲空。

0
else if(direction == 0) { 
    cursor = cursor.getParent(); 
    if(cursor != null && cursor.getRight() != null) 
     direction = 1; 
    else 
     direction = 0; 
} 
相關問題