Java 多维数组中的ArrayIndexOutOfBoundsException

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

我在线程“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<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]);