Java 多维数组中的ArrayIndexOutOfBoundsException
我在线程“main”中遇到以下异常:Java 多维数组中的ArrayIndexOutOfBoundsException,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我在线程“main”中遇到以下异常:java.lang.ArrayIndexOutOfBoundsException:2错误: 我的代码: int ia=445; int ja=445; double [][][]ma=new double [445][445][2]; ma=na; for (int kk=1;kk<=2;kk++) { int jj=2; if (kk == 2) { jj=ja; } for (int ii=2;ii<i
java.lang.ArrayIndexOutOfBoundsException:2错误:
我的代码:
int ia=445;
int ja=445;
double [][][]ma=new double [445][445][2];
ma=na;
for (int kk=1;kk<=2;kk++)
{
int jj=2;
if (kk == 2)
{
jj=ja;
}
for (int ii=2;ii<ia-1;ii++)
{
double uu=0.5*abs(ma[ii][jj][2]+ma[ii-1][jj][2]);
System.out.println(uu);
}
}
intia=445;
int-ja=445;
double[]ma=新的double[445][445][2];
ma=na;
对于(int kk=1;kk而言,问题在于:
double uu=0.5*abs(ma[ii][jj][2]+ma[ii-1][jj][2]);
^ ^
here here too
您只能访问数组第三维中的索引0
和1
也许你想要/需要:
double uu=0.5*abs(ma[ii][jj][1]+ma[ii-1][jj][1]);
或
ma[ii-1][jj][2]
将为您提供一个例外,无论ii
和jj
的值如何,因为最后一个索引必须是0或1(因为维度是[445][445][2]
).您应该更好地格式化代码-有助于提高易读性。此外,数组是基于0索引的,而不是基于1索引的。没有ArrayIndexOutOfBoundsException问题,但我仍遇到此异常
这让我很困惑。您已声明ja并用445初始化,但从未使用该变量。
double uu=0.5*abs(ma[ii][jj][0]+ma[ii-1][jj][0]);