2011-03-25 111 views
0

我想到了用爲什麼我得到一個NullPointerException?

if (data[i] != null) 

我會避免異常,但我仍然得到它。 這是我的代碼。

public Object get(String key) 
{ 
    int i = hashCode(key); 
    while (i != capacity) 
    { 
     if (data[i] != null) 
     { 
      if (key.equals(data[i].key())) 
       return data[i].element(); 
      else 
       i++; 
     } 
     else 
     { 
      return null; 
     } 
    }     
    return null; 
} 

data [i]是一個空數組,全部爲空。

當我執行方法.get()我得到NullPointerException

+1

您應該能夠看到從堆棧跟蹤導致NPE的確切行。哪條線? – nos 2011-03-25 12:29:17

+0

當你在調試器中發現這個異常時,你會看到什麼? – 2011-03-25 12:39:03

+0

問題解決了。我沒有意識到在我的主要我請'get()。toString()''get()。'返回一個對象,但我認爲你不能調用toString null對象謝謝你的幫助! – Jon 2011-03-25 12:53:13

回答

6

你檢查過printstack跟蹤你得到nullpointer異常的哪一行?

我想你還應該檢查一下數組本身是否爲null。

//EDIT: Taking the liberty to add code 
if(data!=null && data[i]!=null) 
{ 

} 
+0

我做了一個單獨的方法來返回'data [i]'。例如data [0]的data [i]返回null。如果你創建一個數組,所有單元格都是空的,我說得對嗎?此方法不會返回Exception,但get方法會返回。 – Jon 2011-03-25 12:41:15

+0

NEVERMIND.I解決了這個錯誤。錯誤是在我的主要。我試圖調用返回的null對象的toString方法。 – Jon 2011-03-25 12:47:19

相關問題