java中的2D数组给出了java.lang.ArrayIndexOutOfBoundsException

时间:2014-02-09 09:43:57

标签: java arrays

我是Java的新手,我正在使用eclipse进行编译。我见过很多论坛,但我无法解决这个错误。我正在为我的作业创建一个程序,这是该程序的一小部分,它给出了奇怪的错误。任何帮助表示赞赏。

这是我收到错误的地方 - &gt; aTwoD[i][j] = 0; <- at Initialize2D.<init>(Initialize2D.java:19)

我现在已经坚持了很长一段时间。 : - (

做了什么 - &gt;

public class Initialize2D
{
    private int[][] aTwoD;

    public Initialize2D (int N)
    {   
        System.out.println("N = " +N);
        int counter = 0;
        aTwoD = new int[N][N];

        int i = 1;
        while( i <= N ) 
        {
            int j = 1;
            while( j <= N )
            {
                System.out.println("counter = " +counter);
                aTwoD[i][j] = 0;
                System.out.println("aTwoD["+i+"]["+j+"] = " + aTwoD[i][j]);
                j++;
                counter++;
            }
            i++;
        }  
    }

    public static void main( String[] args)
    {
        Initialize2D TwoDArray = new Initialize2D(2);
    }   
}   

4 个答案:

答案 0 :(得分:6)

索引从0开始,因此<=会导致超出范围

答案 1 :(得分:1)

Java中的数组索引从0开始,到length - 1结束。它们不是从1开始,而是以代码假定的length结束。

答案 2 :(得分:1)

更改

while( j <= N )

while(j

在N size数组的java索引中,从0到N-1包括。

答案 3 :(得分:0)

请注意,您使用ij条件迭代i <= Nj <= N

Java中的数组是基于零的,这意味着它们介于:0 ... N-1之间。 如果您使用N访问它们,那将超出其范围。

将迭代器从i <= N更改为i < Nj也一样)。这应该可以解决问题。