编辑:也许这是一个3D阵列?我不想使用ArrayList。
我知道这是基本的,但我仍然无法绕着阵列缠头。所以我想创建一个包含7行和4列的二维数组,如下所示:
0 1 2 3
0
1
2
3
4
5
6
在每个地方,我想要两个数字。例如,
0 1 2 3
0 (1, 8) (2, 7) (3, 6) (4, 5)
1
2
3
4
5
6
举个例子,如果我试图在via for循环中填充(2,5),我会这样做:
int[][][2] table = new int[7][4][2];
for (int i = 0; i < 7; i++) {
for (int j = 0; i < 4; j++) {
table[i][j][1] = 2;
table[i][j][2] = 5;
}
}
这是不对的。我无法弄清楚该怎么做。 另外,如果特定单元格正确,我该如何引用? 就像在第一个例子中一样,如果我想要(1,8),我会把:table [1] [1]? 或者,如果我只想要1,我会把:table [1] [1] [1]?
答案 0 :(得分:1)
您的代码中有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]]]
要使用给定的值进行更新,您可以替换第3个数组,或直接更新值。在这里,我展示了更新前两个方法的两种方法:
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]]]