我试图运行我的程序,但它给了我这个错误:"线程中的异常" 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?,这不是同样的错误/问题。
答案 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];