簡體   English   中英

ArrayIndexOutOfBoundsException:不明白為什么

[英]ArrayIndexOutOfBoundsException: don't understand why

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)

我不明白為什么在我的createSquad方法的for循環期間填充數組元素時數組出現問題。 這不是讓我將數組傳遞給createSquad方法..為什么呢? 我已經嘗試了所有方法,從將createSquad方法中的x重新格式化為整數,但是我仍然createSquad

for (int x = 0; x <= squad.length; x++) for循環應更改為for (int x = 0; x < squad.length; x++)

Java中基於數組或基於0的數組,因此當x = 3且數組的大小為3時,您將獲得ArrayIndexOutOfBoundsException

嘗試在IDE中使用調試器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM