我是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);
}
}
答案 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)
请注意,您使用i
,j
条件迭代i <= N
和j <= N
。
Java中的数组是基于零的,这意味着它们介于:0 ... N-1
之间。
如果您使用N
访问它们,那将超出其范围。
将迭代器从i <= N
更改为i < N
(j
也一样)。这应该可以解决问题。