2016-12-01 59 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