2015-01-21 111 views
0

我試圖運行我的程序,但它給我這個錯誤: 「異常線程 」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

如果你想這種行爲,你應該使用ArrayList 。 – 2015-01-21 00:15:56

回答

2

personer數組大小爲0,而不是5.更改此

Person[] personer = new Person[0]; 

Person[] personer = new Person[5]; 
+0

我的錯誤thx :) – user4476151 2015-01-21 00:08:19

4

你聲明的數組有長度0

Person[] personer = new Person[0]; 

然後再試試將元素放入其中。它看起來像你想有一個總的數組中的5種元素的,所以給它長5:

Person[] personer = new Person[5]; 

想想就像一個雞蛋紙箱的數組。紙箱中只有很多插槽,創建紙箱後無法更改。您可以將雞蛋放入一個槽中,或從一個槽中取出一個雞蛋,但不能更改槽的數量。所以一旦你聲明長度爲0的數組,你不能改變這個長度。

但是,如果您不知道陣列將需要的「插槽」數量 - 您需要的大小是可變的,則可以使用更復雜的數據結構,稱爲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); 
+0

沒錯,thx :) – user4476151 2015-01-21 00:08:46