2016-12-01 137 views
-1

請幫幫忙,還是一個用java新手,我不知道爲什麼我不斷收到以下錯誤信息:數組超出界限?

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException 

這裏是我使用的方法:

public static ArrayList <Animal> createAnimalArrayList() { 
     String[] animalName = {"Skye", "Toby", "Peppa", "Charley", "Nemo", "Maisie"}; 
     String[] ownerName = {"Joe Bloggs", "Mary Rice", "Ann Carroll", "Ciara Roddy", "Lllian Parks", "Ruth Jones"}; 
     int[] animalAge = {10, 5, 1, 6, 2, 8, 3}; 
     AnimalType[] animalType = {AnimalType.CAT, AnimalType.COW, AnimalType.DOG, AnimalType.GERBIL, AnimalType.HORSE, AnimalType.SHEEP}; 

     ArrayList<Animal> animalList = new ArrayList<Animal>(); 
     Random rand = new Random(); 
     int randomNum = 0; 
     String aName = ""; 
     String oName = ""; 
     int aAge = -1; 
     AnimalType aType = null; 

     int randNumAnimals = rand.nextInt(4)+1; 

     for (int i = 0; i<randNumAnimals; i++) { 
      aName = animalName[rand.nextInt(6)]; 
      oName = ownerName[rand.nextInt(6)]; 
      aAge = animalAge[rand.nextInt(6)]; 
      aType = animalType[rand.nextInt(6)]; 
      animalList.add(new Animal(aName, oName, aAge, aType)); 
     } 
     return animalList; 
    } 

任何提示,或幫助將不勝感激,我已經查看了該方法,並不能說出爲什麼代碼無法正常工作。

+0

你數組的'最大含量不0-5''0-6'讓你的內容範圍僅僅是第0指數5日指數 –

+1

堆棧跟蹤也應該給你,這是行失敗。 – Holloway

回答

0

Java數組從0開始。所以,如果你有一個數組6項,你只能PIC從0到5

因此,爲了解決你的問題,你必須更換

rand.nextInt(6) 

通過

rand.nextInt(6)-1 
+1

這不是問題所在。 'rand.nextInt(6)'永遠不會返回6,它會返回一個0到5之間的隨機數。請參閱[API文檔](http://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextInt-int-)。 – Jesper