删除数组字段(数组包含对象)

时间:2014-01-09 22:18:54

标签: java

我正在尝试删除数组中的字段。 该数组包含Person类型的对象(Person包含firstname,lastname,birthdate和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;
    }
}

2 个答案:

答案 0 :(得分:3)

最可能的情况是您的数组未满,因此某些容器数组条目为空,container[i].id触发空指针异常。用

替换你的测试

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

并查看是否可以解决您的问题。

答案 1 :(得分:2)

问题是由于行

 container[i].id == index

当你已经“删除”(标记为空)前一个容器时,你可能会得到一个NullPointerException

替换为

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