当第一个数组是[2]或更多时,为什么Java多维数组ge ArrayIndexOutOfBoundsException?

时间:2017-11-20 20:45:24

标签: java arrays exception multidimensional-array

我正在学习Java的多维数组。当我设置arr ={{1,2,3},{4,5,6}}和int x = arr[2 or more][any digit]时,ArrayIndexOutOfBoundsException会出现。

public class Array {

    public static void main(String[] args) {

        int [][] arr= { {4,5,6,7},{1,2,3,8}};
        int x;

        for(int a= 0,b= 0;a<= 3 && b<= 3; a++, b++){
            try {
                x = arr[a][b];
                System.out.println("a = "+ a + " b = "+ b +"\n"+ x +"\nCorrect----------------------");
            }catch(ArrayIndexOutOfBoundsException e) {
                System.out.println("a = "+ a + " b = "+ b +"\nERROR------------------");
            }
        }   

    }

}

结果:

a = 0 b = 0
4
Correct----------------------
a = 1 b = 1
2
Correct----------------------
a = 2 b = 2
ERROR------------------
a = 3 b = 3
ERROR------------------

2 个答案:

答案 0 :(得分:1)

你的for循环经历4x4范围,但你的数组是2x4。

2d数组是一个数组数组。第一个索引是您访问的数组。

你有两个数组,[4,5,6,7]和[1,2,3,8]

访问arr [2]意味着给我第三个数组,而你没有第三个数组

答案 1 :(得分:1)

Runtime rt = Runtime.getRuntime(); long mem = rt.totalMemory(); long fm = rt.freeMemory(); long mm = rt.maxMemory(); long used = mm - fm; 定义了一个2 int [][] arr= { {4,5,6,7},{1,2,3,8}};的数组:

int[]

所以arr[0]={4,5,6,7} arr[1]={1,2,3,8} 将抛出异常。