2014-01-09 95 views
3

我想刪除數組中的字段。 該數組包含Person類型的對象(Person包含名字,姓氏,出生日期和ID)。刪除數組字段(數組包含對象)

我的意圖是查找每個數組字段,並將輸入ID與所有數組字段進行比較。當我找到合適的,我將它設置爲null

,但我得到:

Exception in thread "main" java.lang.NullPointerException 

而且我不知道爲什麼。

public static void removePerson(Person[] container) { 
    TextIO.putln("Enter ID of person to be removed"); 
    int index = TextIO.getInt(); 

    for (int i = 0 ; i < container.length ; i ++) { 
     if (container[i].id == index) 
      container[i] = null; 
    } 
} 
+0

在「容器」的其中一個元素很可能是'null'。我們不能僅僅幫助你提供給我們的代碼,因爲'容器'沒有在那裏設置。請爲我們提供一份[SSCCE(簡短,獨立,正確(可編譯),示例)](http://sscce.org)。 – Dukeling

+2

只需打印所有的堆棧跟蹤,你就會發現原因。你應該改變這一行:if(container [i] .id == index)'if'(container [i]!= null && container [i] .id == index)'。 –

回答

3

最可能的情況是你的數組沒有滿,所以一些容器陣列條目是空的,container[i].id是什麼觸發空指針異常。與

更換您的測試,看看是否能解決您的問題。

2

的問題是由於該行

container[i].id == index 

當你已經「刪除」(標記爲空)以前的容器,你可以得到一個NullPointerException

更換到

if (container[i]!=null && container[i].id == index)