Движение по спирали: влево, вниз, вправо, вверх;из центра [4] [4] ... Я написал код, но натолкнулся на пару ошибок, а именно:
Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: -1 и 9
Строка кода 13: mx[i][j--] = k;
(и другие, например, 28 ...).Я просто не могу понять, что я делаю неправильно и почему компилятор видит здесь ошибку.
public class FoLab {
public static void main(String[] args) {
int[][] mx = new int[9][9];
int i, j, k = 1, n = 1, b;
for (i=0; i < 9; i++)
for (j = 0; j < 9; j++) {
i = 4;
j = 4;
if (n % 2 != 0) { //if odd
for (b = 0; b <= n; b++) {
mx[i][j--] = k; //go left
k++;
}
for (b = 0; b <= n; b++) {
mx[i++][j] = k; //go down
k++;
}
n++; //number of steps after "left + down" is increasing by 1, making it even
}
else { //if even
for (b = 0; b <= n; b++) {
mx[i][j++] = k; //go right
k++;
}
for (b = 0; b <= n; b++) {
mx[i--][j] = k; //go up
k++;
}
n++; //number of steps after "right + up" is increasing, making it odd
}
}
for (i = 0; i < 9; i++) {
for (j = 0; j < 9; j++)
System.out.printf(" %02d ", mx[i][j]);
System.out.println("\n");
}
}
}