我正在尝试删除数组中的字段。
该数组包含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;
}
}
答案 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)