【发布时间】:2017-11-02 11:11:26
【问题描述】:
我有以下 Java 类,它将一个 Person 对象添加到现有的 Person Array:
public class PersonService{
protected int lastItemInPersonArray = 0;
private Person[] persons = new Person[100];
public void addPersonToPersonArray(Person personToAdd){
persons[lastItemInPersonArray++] = personToAdd;
}
}
我可以在此处正确添加 1 个对象,但是当我尝试添加 2 个对象时出现以下错误:
java.lang.ArrayIndexOutOfBoundsException: 1
导致这种情况的我的逻辑有什么问题?
【问题讨论】:
-
您是否尝试将
protected int lastItemInPersonArray设为私有?看来您正在某处更改此变量。 -
我不会在上面显示的方法中更改此 int 的值。
-
那么您声明了一个包含 100 个单元格的
Person[] persons = new Person[100];。但是你得到一个索引 1 的异常。检查你的数组的长度。它可能在其他地方初始化。但是,当然,您应该在此处添加一个条件以在到达末尾时阻止插入。如果你想要“无限”数组,你应该看到java.util.List。目前,我们需要一个minimal reproducible example,因为这仅通过 3 个addPersonnToPersonArray调用是无法重现的 -
如何执行这段代码?对我来说它看起来不错,如果我运行它(使用虚拟 Person 类),它就可以工作。
-
我也认为你改变了
lastItemInPersonArray,你可以在addPersonToPersonArray方法中打印lastItemInPersonArray和persons数组长度
标签: java arrays int indexoutofboundsexception