Java 中 2 个数字的二维数组
2d array of 2 numbers in Java
编辑:也许它是一个 3 维数组?我不想使用 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
举个例子,如果我试图通过 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]?
您的代码中有 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]]]
编辑:也许它是一个 3 维数组?我不想使用 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
举个例子,如果我试图通过 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]?
您的代码中有 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]]]