这个问题有点奇怪,很难找到答案。
代码如下:
int[][][][] array = new int[3][2][6][8];
int x = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
for (int k = 0; k < array[i][j].length; k++) {
for (int n = 0; n < array[i][j][k].length; n++) {
array[i][j][k][n] = ++x;
}
}
}
}
这一行发生了什么:
array[i][j][k].length
更具体地说,我想知道为什么 array[i][j][k].length
循环正确的次数。
在我看来,这就像是在数 [6]
在 new int[3][2][6][8];
什么是简单的英语翻译让我的大脑完全理解它而不是仅仅能够编码它?
我只是在用 array[i][j][k].length
举个例子。我可以问你同样的问题 array[i][j].length
3条答案
按热度按时间xam8gpfp1#
而不是想着
array
这里是一个多维数组int[][][][]
,将其视为一个一维数组(长度为3),包含int[][][]
s。如何在一维数组中循环?好,
现在将为每个
foo
在array
. 自foo
是的另一个一维数组(长度为2)int[][]
s、 我们可以用同样的方式循环:for (int i = 0; i < array.length; i++) { // for each foo in array...
int[][][] foo = array[i];
for (int j = 0 ; j < foo.length ; j++) { // for each bar in foo...
int[][] bar = foo[j];
for (int k = 0 ; k < bar.length ; k++) { // for each baz in bar...
int[] baz = bar[k];
// do something with baz...
}
}
}
for (int i = 0; i < array.length; i++) { // for each foo in array...
int[][][] foo = array[i];
for (int j = 0 ; j < foo.length ; j++) { // for each bar in foo...
int[][] bar = foo[j];
for (int k = 0 ; k < bar.length ; k++) { // for each baz in bar...
int[] baz = bar[k];
for (int n = 0 ; n < baz.length ; n++) { // for each number in baz...
// do something with baz[n]
}
}
}
}
foo = array[i];
bar = foo[j];
baz = bar[k];
baz[n]
bar[k][n] // replace baz with bar[k]
foo[j][k][n] // replace bar with foo[j]
array[i][j][k][n] // replace foo with array[i]
laik7k3q2#
基本上,
int[][][][] array
是一个数组,一个数组,一个数组,一个数组,一个数组int[3][2][6][8]
,您有一个3数组2数组6数组8 int的数组。array[i]
从名为array
.array[i][k]
给你第i个数组的第k个数组。因此
array[i][j][k].length
从名为array
. 在这里,因为您创建了int[3][2][6][8]
,无论i,j和k,你都会有长度8
,因为来自同一维度的所有数组都具有相同的大小。我们可以把一个10 int的数组加到
array[1][1]
,然后array[1][1].length
将7
以及array[1][1][6].length
将ten
.最重要的是要理解和记住
int[][][][] array
是数组的数组。所以它循环的次数是正确的,因为你不会离开数组和他的子数组(还有其他嵌套的子数组…),因为你总是有它们的长度,不会走得更远。bihw5rsg3#
多维数组可以看作是数组的数组(数组本身可以包含数组)。阵列阵列与二维网格的区别在于,“较小”的阵列可以具有不同的长度。使用
array[i][j][k].length
(例如),仅当第三维的每个数组大小相同时才起作用。假设是这样,在不同级别上查找数组的长度将返回它们各自维度的大小。