有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

随机数发生器中的java索引越界异常错误

我刚刚开始编程,并试图创建一个随机数发生器,其中将生成一个随机数,该随机数将与一个名称链接,然后该名称将显示出来,我无法在代码中找出问题所在,这是弹出的错误

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
    at random.Randomiser.main(Randomiser.java:21)" 

package random;

public class Randomiser {

    public static void main(String[] args) {

        int number = ((int) (Math.random()*10))+1;

        int[] intArray = new int[9];

        intArray[0] = 1;
        intArray[1] = 2;
        intArray[2] = 3;
        intArray[3] = 4;
        intArray[4] = 5;
        intArray[5] = 6;
        intArray[6] = 7;
        intArray[7] = 8;
        intArray[8] = 9;
        intArray[9] = 10;

        if (number == 1) 
            System.out.println("Isaac");
        if (number == 2) 
            System.out.println("Madgeline");
        if (number == 3) 
            System.out.println("Cain");
        if (number == 4) 
            System.out.println("Judas");
        if (number == 5) 
            System.out.println("Blue Baby");
        if (number == 6) 
            System.out.println("Eve");
        if (number == 7) 
            System.out.println("Samson");
        if (number == 8) 
            System.out.println("Azazel");
        if (number == 9) 
            System.out.println("Lazarus");
        if (number == 10) 
            System.out.println("Eden");
    }
}

共 (3) 个答案

  1. # 1 楼答案

    更改数组大小。现在您的大小是9,最大索引是8

    int[] intArray = new int[10];
    
  2. # 2 楼答案

    必须按如下方式创建阵列:

    int[] intArray = new int[10]; 
    

    创建阵列时,请给出大小:

    int[] intArray = new int[9];  // size is 9
    

    当你访问它时,你从位置0开始,所以当你访问它时:

    intArray[9] = 10; 
    // you're accessing to a non created position of the array 
    // max position is intArray[8] then:
    // IndexOutOfBounds exception is thrown.
    
  3. # 3 楼答案

    这里有从0到8的索引。你没有第九个索引。 int[] intArray = new int[9];将其更改为int[] intArray = new int[10]或删除intArray[9] = 10;

    你可以这样声明你的数组int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};