【问题标题】:java.lang.ArrayIndexOutOfBoundsException when adding new elements to an array? [closed]向数组添加新元素时出现java.lang.ArrayIndexOutOfBoundsException? [关闭]
【发布时间】: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方法中打印lastItemInPersonArraypersons数组长度

标签: java arrays int indexoutofboundsexception


【解决方案1】:

这对我有用。

public class PersonService {
    protected int lastItemInPersonArray = 0;
    private Person[] persons = new Person[100];
    public void addPersonToPersonArray(Person personToAdd) {
        persons[lastItemInPersonArray++] = personToAdd;
    }   
    public static void main(String[] args) {
        PersonService ps = new PersonService();
        ps.addPersonToPersonArray(new Person("P 1"));
        ps.addPersonToPersonArray(new Person("P 2"));
        ps.addPersonToPersonArray(new Person("P 3"));   
        System.out.println(ps.persons[0].nome);
        System.out.println(ps.persons[1].nome);
        System.out.println(ps.persons[2].nome);
    }
}
class Person{
    public Person(String nome) {
        this.nome = nome;
    }
    String nome;
}

【讨论】:

    猜你喜欢
    • 2013-10-22
    • 1970-01-01
    • 2018-10-16
    • 2020-09-15
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多