2014-01-09 58 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)