我制造的阵列出了什么问题?

时间:2015-01-21 00:01:43

标签: java arrays

我试图运行我的程序,但它给了我这个错误:"线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:0     在Main.main(Main.java:9)"

public class Main {

    //main metode, som kører programmet.
    public static void main(String[] args){

        //Vi deklarerer et array i en lokal variabel.
        Person[] personer = new Person[0];
        personer[0]= new Person("Martin", 22, "Male");
        personer[1]= new Person("Mads", 25, "Male");
        personer[2]= new Person("Sofie", 20, "Female");
        personer[3]= new Person("Kasper", 26, "Male");
        personer[4]= new Person("Martin", 17, "Male");

        //Her laver vi en løkke for at udskrive alle vores objekter i vores array.
        int i = 0; //Initialisationen.
        while (i < 5 ) //Betingelsen.
        {
            System.out.println("Navn: "+personer[i].getNavn()+" Alder: "+personer[i].getalder()+" Kon: "+personer[i].getkøn());
            i = i + 1;
        }
    }
}

我已经找到了解决方案,我找到的唯一的东西是; What's wrong with my array?,这不是同样的错误/问题。

2 个答案:

答案 0 :(得分:4)

您声明数组的长度为0

Person[] personer = new Person[0];

然后尝试将元素放入其中。看起来你想在数组中总共有5个元素,所以给它长度为5:

Person[] personer = new Person[5];

想想像鸡蛋盒一样的阵列。纸箱中只有很多插槽,您在创建纸箱后无法更改。您可以将鸡蛋放入槽中,或者从槽中取出鸡蛋,但是您无法更改槽位数。因此,一旦声明长度为0的数组,就无法更改该长度。

但是,如果您不知道&#34;插槽的数量&#34;您的数组需要 - 您需要大小可变,您可以使用更复杂的数据结构ArrayList。使用ArrayList与Array的语法略有不同,但方法大致相同。以下是如何更改代码以使用ArrayList,这样可以在以后为集合中添加更多人员。

ArrayList<Person> personer = new ArrayList<Person>();
personer.add(new Person("Martin", 22, "Male"));
personer.add(new Person("Mads", 25, "Male"));
personer.add(new Person("Sofie", 20, "Female"));
personer.add(new Person("Kasper", 26, "Male"));
personer.add(new Person("Martin", 17, "Male"));

然后,要获取索引i的元素,请使用

personer.get(i);

答案 1 :(得分:2)

您的personer数组大小为0而不是5.更改此

Person[] personer = new Person[0];

Person[] personer = new Person[5];