打印数组时的二维数组错误:数组索引超出绑定

时间:2015-08-09 16:34:55

标签: java arrays

public class TwoDarray {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a[][] = new int[2][2];
        a[0][0] = 0;    a[0][1] = 1;    a[0][2] = 2;
        a[1][0] = 3;    a[1][1] = 4;    a[1][2] = 5;
        a[2][0] = 6;    a[2][1] = 7;    a[2][2] = 8;
        for(int i=0;i<=2;i++)
        {
            for(int j=0;j<=2;j++)
            {
                System.out.print("\t"+a[i][j]);
            }
            System.out.println();

        }

    }
}

我使用eclipse并且它给出了错误:

  

线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:2   在TwoDarray.main(TwoDarray.java:7)

我认为我的代码还可以!但请建议我是否做错了...

在一本书中,他们给出了数组的结构化形式。twoDarray

并且还给出了以下代码: enter image description here

我的数组结构与此类似,只有2行2列。

4 个答案:

答案 0 :(得分:3)

如果数组的大小为n,则其最大索引为n-1。您有大小为2的数组,因此最大索引为1,但您尝试访问索引2

答案 1 :(得分:1)

初始化数组时索引要大一些:

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

答案 2 :(得分:1)

声明数组时:int a[][] = new int[2][2];

int[2]表示您将有2例内存,因此a[0]a[1]。 然后你试图触及a[2],导致错误。

您必须声明:

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

答案 3 :(得分:0)

int a[][] = new int[R][C];

这里R代表行,C代表列

hence a[2][2]

2行,2列

使用

更新您的代码
int a[][] = new int[3][3];