У меня есть трехмерный массив int, и я хотел бы распечатать его в следующем формате:
[n,n,n] [n,n,n] [n,n,n]
[n,n,n] [n,n,n] [n,n,n]
[n,n,n] [n,n,n] [n,n,n]
[n,n,n] [n,n,n] [n,n,n]
[n,n,n] [n,n,n] [n,n,n]
[n,n,n] [n,n,n] [n,n,n]
[n,n,n] [n,n,n] [n,n,n]
[n,n,n] [n,n,n] [n,n,n]
[n,n,n] [n,n,n] [n,n,n]
Я попытался использовать приведенный ниже код, но он не распечатался правильно, потому что второй итретьи столбцы должны быть добавлены к той же строке, что и первый столбец:
int[][][] hardestOne = {
{{8, 0, 0, 0, 0, 3, 0, 7, 0}, {0, 0, 0, 6, 0, 0, 0, 9, 0}, {0, 0, 0, 0, 0, 0, 2, 0, 0}},
{{0, 5, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 7, 0, 4, 5, 1, 0, 0}, {0, 0, 0, 7, 0, 0, 0, 3, 0}},
{{0, 0, 1, 0, 0, 8, 0, 9, 0}, {0, 0, 0, 5, 0, 0, 0, 0, 0}, {0, 6, 8, 0, 1, 0, 4, 0, 0}}
};
public String toString() {
String s = "";
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table[i].length; j++) {
for (int k = 0; k < table[i][j].length; k++) {
if (k == 2 || k == 5) {
s += table[i][j][k] + "\n";
} else {
s += table[i][j][k] + "";
}
}
s += "\n\n";
}
s += "\n";
}
return s;
}
ОБНОВЛЕНИЕ: Я изменил пример массива, чтобы сделать его более читабельным.
ОБНОВЛЕНИЕ 2: Пользователь @samurott дал действительно хороший ответ, но есть проблема:
Рассмотрим эти три строки, которые представляют первый блок в моем массиве
{{8, 0, 0}, {0, 0, 3}, {0, 7, 0}},
{{0, 0, 0}, {6, 0, 0}, {0, 9, 0}},
{{0, 0, 0}, {0, 0, 0}, {2, 0, 0}}
Просмотрэти строки над печатью должны выглядеть следующим образом
[8,0,0] [0,0,0] [0,0,0]
[0,0,3] [6,0,0] [0,0,0]
[0,7,0] [0,9,0] [2,0,0]
Но когда я печатаю его, используя его код, это выглядит так
[8,0,0] [0,0,3] [0,7,0]
[0,0,0] [6,0,0] [0,9,0]
[0,0,0] [0,0,0] [2,0,0]
Вы видите, что я могу изменить все позиции массивано это будет становиться все более и более запутанным позже.
РЕШЕНИЕ: См. решение ниже, сделанное пользователем @ Alex R