你在你的代碼3個錯誤:
int[][][2] table = new int[7][4][2]; // <== Remove 2
for (int i = 0; i < 7; i++) {
for (int j = 0; i < 4; j++) { // <== Change i to j
table[i][j][1] = 2; // <== Arrays are zero-based
table[i][j][2] = 5; // <== -
}
}
更正代碼:
int[][][] table = new int[7][4][2];
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 4; j++) {
table[i][j][0] = 2;
table[i][j][1] = 5;
}
}
測試與System.out.println(Arrays.deepToString(table))
產生:
[[[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]], [[2, 5], [2, 5], [2, 5], [2, 5]]]
要更新的值給出,你可以替換第三個數組,或直接更新值。在這裏,我展示兩種方式來更新前兩個:
int[][][] table = new int[7][4][2];
table[0][0] = new int[] { 1, 8 };
table[0][1][0] = 2;
table[0][1][1] = 7;
[[[1, 8], [2, 7], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]]]
你甚至可以更換整個第一行中的一個操作:
int[][][] table = new int[7][4][2];
table[0] = new int[][] { {1, 8}, {2, 7}, {3, 6}, {4, 5} };
[[[1, 8], [2, 7], [3, 6], [4, 5]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0]]]
如果你想在每一個元素的兩個數字你需要一個對象類型(比如'Pair')。 –
我可以在不使用ArrayList的情況下做類似的事嗎?也許是3D陣列? – bov25
你可以做一個Pair [] []'。 –