2014-10-16 2 views
0

я получаю следующее исключение в потоке «главный»: java.lang.ArrayIndexOutOfBoundsException: 2 error:ArrayIndexOutOfBoundsException в нескольких мерного массива

Мой код:

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); 

    } 
} 

Хотя не существует никаких ArrayIndexOutOfBoundsException вопросы, я все еще получаю это исключение , Может кто-нибудь объяснить, как решить эту проблему?

+0

Вы должны форматировать свой код лучше - это помогает улучшить удобочитаемость. Кроме того, массивы основаны на 0-индексах, а не на основе 1-индекса. – Obicere

+1

'Нет проблем с ArrayIndexOutOfBoundsException, все же я получаю это исключение'. Это меня смущает. – csmckelvey

+0

вы объявили ja и инициализировали с помощью 445, но вы никогда не используете эту переменную. – DeepInJava

ответ

1

ma[ii-1][jj][2] даст вам исключение независимо от значений ii и jj, поскольку последний индекс должен быть 0 или 1 (так как размеры равны [445][445][2]).

1

Проблема здесь:

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]); 

или

double uu=0.5*abs(ma[ii][jj][0]+ma[ii-1][jj][0]); 
+0

спасибо .... Это помогло мне определить мою проблему – user4047127

Смежные вопросы