谁能解释一下下面代码中的以下语句是什么意思..??
for (j = 0; j < arrayOfInts[i].length;
j++)
我正在学习Java语言,很难弄清楚。
class BreakWithLabelDemo {
public static void main(String[] args) {
int[][] arrayOfInts = {
{ 32, 87, 3, 589 },
{ 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }
};
int searchfor = 12;
int i;
int j = 0;
boolean foundIt = false;
search:
for (i = 0; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length;
j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
break search;
}
}
}
if (foundIt) {
System.out.println("Found " + searchfor + " at " + i + ", " + j);
} else {
System.out.println(searchfor + " not in the array");
}
}
}
Java 实际上没有多维数组,它有可以包含其他数组的数组。该代码从误导性命名的arrayOfInts
中获取第 i
项。此项本身是一个整数数组,因此它采用此数组的length
。(存储在另一个数组中。因此,例如在此代码中:
int[][] array2d = new int[][] {
new int[] {1}, // stored at array2d[0]
new int[] {2, 3, 4} // stored at array2d[1]
}
以下情况为真:
-
array2d.length == 2
("多维"数组包含另外两个数组。 -
array2d[0].length == 1
(第一个有一个元素:1
.( -
array2d[1].length == 3
(第二个有三个元素:2
、3
、4
。
Java中没有多维数组。只有数组的数组。
arrayOfInts
就是这样一个整数数组数组。所以arrayOfInts[i]
是一个整数数组,并且
for (j = 0; j < arrayOfInts[i].length; j++)
迭代该数组的每个元素,即它迭代存储在整数数组数组的索引i
的整数数组中的所有元素。
你可以把它看作是一个包含N个小盒子的大盒子,每个较小的盒子包含给定数量的整数。 arrayOfInt
是大盒子。 arrayOfInt[i]
是大盒子中i
个较小的盒子。循环遍历这个小盒子中的每个整数。
在Java中,二维数组是实现的一维数组。
for (j = 0; j < arrayOfInts[i].length; j++)
arrayOfInts[i].length
表示 arrayOfInts 的第 i 行的长度。
int[][] a = new int[2][4];
此二维数组将有两行和四列。这实际上分配了 3 个对象:一个包含 2 个元素的一维数组来保存每个实际的行数组,以及两个包含 4 个元素的一维数组来表示行的内容。
+-----+ +-----+-----+-----+-----+
|a[0] | -> | [0] | [1] | [2] | [3] |
| | +-----+-----+-----+-----+ In Java two-dimensional arrays are implemented is a
one-dimensional array of one-dimensional arrays -- like this.
+-----+
| | +-----+-----+-----+-----+
|a[1] | -> | [0] | [1] | [2] | [3] |
+-----+ +-----+-----+-----+-----+
j= 0; j <arrayOfInts[i].length>
因为你的数组是二维的,数组的内部元素将是数组。
所以你得到元素(这是数组(arrayOfInts[i]并计算长度arrayOfInts[i].length,换句话说:
int[] element = arrayOfInts[i]; int length = arrayOfInts[i].length;
把arrayOfInts[i][j]想象成一个二维网格,就像一个电子表格。为了帮助可视化,假设 [j] 表示列索引,[i] 表示行索引。
解释是:
// iterate through every column j in the current row i:
for (j = 0; j < arrayOfInts[i].length; j++)
在你的代码中,请参阅单词int [][]arrayOfInts=...
它是一个二维数组。
二维数组只不过是arrays of arrays
这意味着将有许多正常的一维数组,而另一个数组具有每个一维数组的引用。
因此,行的解释,for(j=0;j<arrayOfInts[i].length;j++)
给出如下:
首先,让我们关注arrayOfInts[i].length
我已经告诉过你arrayOfInts
是一个数组数组。因此,arrayOfInts[i]
指向第 i
个数组。单词 arrayOfInts[i].length
返回第 arrayOfInts
个数组i
中的长度(即数组中的元素数(。
循环继续发生,直到j
小于 1d 数组中的元素数(小于(不要使用等于(,因为 arrayOfInts[i][0] 将是第一个元素(。