当我改变条件(多维数组)时,为什么我的for循环不起作用?

时间:2018-06-12 19:24:55

标签: java arrays

我是一名新程序员,而且我正在学习多维数组。我写了这个简单的代码,我不知道为什么我得到这个编译错误:

线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:2 在Arrays.main(Arrays.java:21)

 public class Arrays {

    public static void main(String[] args) {

        int [][][] a  = new int [2][3][4];

        for(int i = 0; i < a.length; i++){

            for(int j = 0; j < a[i].length; j++){

                for(int k = 0; k < a[j].length; k++){
                System.out.print(a[i][j][k]);
            }
            System.out.println();
        }
        System.out.println();
    }
    System.out.println();
 }
}

如果我将数组更改为3x3x3,则代码可以正常工作

public class Arrays {

    public static void main(String[] args) {

        int [][][] a  = new int [3][3][3];

        for(int i = 0; i < a.length; i++){

            for(int j = 0; j < a[i].length; j++){

                for(int k = 0; k < a[j].length; k++){
                System.out.print(a[i][j][k]);
            }
            System.out.println();
        }
        System.out.println();
    }
    System.out.println();
 }
}

为什么?

1 个答案:

答案 0 :(得分:-1)

非常简单。您的数组没有相同的行和列来处理此类迭代。你可以清除自己的疑问。只需打印出i,j和k的值。您将能够看到在迭代中的某个点上没有可以引用的索引。因此它是编译时错误