ArrayIndexOutOfBoundsException:不明白为什么

时间:2016-03-17 07:38:54

标签: java arrays indexoutofboundsexception

plus

我不明白为什么在我import java.util.Random; // random class public class MartianBattler { // start of class public static void main(String[] args) { // start of main int battles = 0; //initializes battles to 0 Random rand = new Random(); // creates an object of random class int[] squad = new int[rand.nextInt(5)+1]; // generates a random number to tell us how many squads we will have battles = rand.nextInt((5)+1); // generates number of battles to fight createSquad(squad); battle(squad, battles); // passes array squads elements to battle static method } // end of main public static void battle(int[] squad, int battle) { // static method that sends troops to battle for(int x = 0; x < battle; x++ ) { // for loop Random randS = new Random(); // generate random object int first = randS.nextInt(squad.length)+1; // generate first martian to go System.out.printf("%d%n %d%n%d%n", squad.length, first, battle); } } public static void createSquad(int[] squad) { Random ramdS = new Random(); MartianAttack foo = new MartianAttack(0,false); boolean clone = false; for(int x = 0; x <= squad.length; x++) { clone = ramdS.nextBoolean(); if (clone == true) squad[x] = foo.getidNumber(); else squad[x] = ramdS.nextInt((100)+1); } } } // end of class run: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at MartianBattler.createSquad(MartianBattler.java:48) at MartianBattler.main(MartianBattler.java:12) C:\Users\Ethan\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 BUILD FAILED (total time: 0 seconds) 方法的for循环期间填充数组元素时,我的数组出现了问题。它不是让我把数组传递给createSquad方法..为什么?我已尝试过将createSquad方法中的x重新格式化为整数但我仍然无法获得的任何内容。

1 个答案:

答案 0 :(得分:2)

您的for循环for (int x = 0; x <= squad.length; x++)应更改为for (int x = 0; x < squad.length; x++)

数组或基于0的Java,因此当x = 3且数组大小为3时,您得到ArrayIndexOutOfBoundsException

尝试在IDE中使用调试器。