Google foobar arrayIndexOutOfBounds исключение для двумерного массива
Мой код прекрасно работает в eclipse, но выдает глупые исключения на консоли foobar... (это уровень 3:prepare_the_bunnies_escape challenge)
public static int answer(int[][] mazearr) {
arrLen = mazearr.length;
int count=0;
int shortestPathLen = calShortestPath(mazearr);
int pathLen;
//This is the part which throws arrayIndexOutOfBoundsExcepiton
//--------------------------------------
for (int i1 = 0; i1 < arrLen; i1++)
for (int j1 = 0; j1 < arrLen; j1++)
if(mazearr[i1][j1]==5)
mazearr[i1][j1]=0;
//----------------------------------------
for (int i = 0; i < arrLen; i++) {
for (int j = 0; j < arrLen; j++) {
if(mazearr[i][j] == 1 && isRemovable(i,j, mazearr) &&
count<=5)
{
count++;
mazearr[i][j]=0;
pathLen = calShortestPath(mazearr);
shortestPathLen = (pathLen<shortestPathLen)?
pathLen:shortestPathLen;
mazearr[i][j]=1;
for (int i1 = 0; i1 < arrLen; i1++)
for (int j1 = 0; j1 < arrLen; j1++)
if(mazearr[i1][j1]==5)
mazearr[i1][j1]=0;
}
}
}
return shortestPathLen;
}
Я думаю, что упускаю что-то очень очевидное... Что я делаю не так??? Тестовые случаи работают на моей системе, пожалуйста, помогите мне любым возможным способом.
1 ответ
Я понял свою ошибку здесь... Ввод не всегда квадратная матрица. Я ошибочно предположил, что это не было указано в постановке задачи.
for (int i1 = 0; i1 < arr.length ; i1++)
for (int j1 = 0; j1 < arr[0].length ; j1++)
{ if(arr[i1][j1]==5)
{ arr[i1][j1]=0;}}