Решая задачу наткнулся на вот такую странность, от которой мозги плавятся.
Вот кусок кода:
for (int i = 0; i < FIELD_WIDTH; i++) {
for (int j = 0; j < FIELD_WIDTH; j++) {
System.out.print(i + "" + j + "=" + gameTiles[i][j].value + " ");
int k = FIELD_WIDTH - 1 - i;
int l = FIELD_WIDTH - 1 - j;
System.out.print(k + "" + l + "=" + gameTiles[k][l].value + " ");
System.out.println();
tempTiles[i][j] = gameTiles[FIELD_WIDTH - 1 - i][FIELD_WIDTH - 1 - j];
}
}
Казалось бы тут просто распечатывается массив "gameTiles" в 2 столбика. В одном столбике мы идем по массиву слева-направо, сверху-вниз, а в другом снизу-вверх, справа-налево. И массив в данном куске кода не меняется.
Однако это не так.
Вот результаты одного из тестов.
00=0 33=0
01=0 32=0
02=0 31=0
03=0 30=2
10=2 23=0
11=0 22=0
12=0 21=4
13=0 20=2
20=2 13=2
21=4 12=4
22=0 11=0
23=0 10=0
30=2 03=2
31=0 02=0
32=0 01=0
33=0 00=0
Например ячейка [1][2] имеет разное значение.
Причем массив меняется в последней строке, в этой:
tempTiles[i][j] = gameTiles[FIELD_WIDTH - 1 - i][FIELD_WIDTH - 1 - j];
Если её закомментировать, то таких чудес не происходит.
Может кто объяснить как так происходит?package com.javarush.task.task35.task3513;
public class Main {
public static void main(String[] args) {
}
}