任何人都可以解释一下以下代码中的以下语句意味着什么.. ??
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");
}
}
}
答案 0 :(得分:2)
Java实际上没有多维数组,它有可以包含其他数组的数组。该代码从误导性名称为i
的{{1}}项中获取。这个项本身就是一个整数数组,所以它取这个数组的arrayOfInts
。 (那是存储在另一个数组中的。)所以,例如在这段代码中:
length
以下是真实的:
int[][] array2d = new int[][] {
new int[] {1}, // stored at array2d[0]
new int[] {2, 3, 4} // stored at array2d[1]
}
(“multidimensional”数组包含另外两个数组。)array2d.length == 2
(第一个元素有一个元素:array2d[0].length == 1
。)1
(第二个包含三个元素:array2d[1].length == 3
,2
,3
。)答案 1 :(得分:1)
Java中没有多维数组。所有都有数组数组。
arrayOfInts
就是这样一个int数组的数组。所以arrayOfInts[i]
是一个int数组,
for (j = 0; j < arrayOfInts[i].length; j++)
遍历此数组的每个元素,即迭代存储在整数数组数组的索引i
中的整数数组中的所有元素。
您可以将其视为一个包含N个较小框的大框,每个较小的框包含给定数量的整数。 arrayOfInt
是大盒子。 arrayOfInt[i]
是大框中i
个较小的框。循环遍历这个较小的框中的每个整数。
答案 2 :(得分:0)
在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] |
+-----+ +-----+-----+-----+-----+
答案 3 :(得分:0)
j = 0; j&lt; arrayOfInts [I]。长度
因为你的数组是二维的,数组的内部元素将是数组。
所以你得到元素(数组)arrayOfInts [i]并计算长度arrayOfInts [i] .length,换句话说:
int [] element = arrayOfInts [i]; int length = arrayOfInts [i] .length;
答案 4 :(得分:0)
将arrayOfInts [i] [j]视为二维网格,就像电子表格一样。为了帮助可视化,假设[j]表示列索引,[i]表示行索引。
然后解释:
// iterate through every column j in the current row i:
for (j = 0; j < arrayOfInts[i].length; j++)
答案 5 :(得分:0)
在您的代码中,请参阅int [][]arrayOfInts=...
字样
它是一个二维数组。
二维数组只是arrays of arrays
这意味着将会有许多正常的1-d数组,以及另一个具有每个1-d数组引用的数组
因此,行for(j=0;j<arrayOfInts[i].length;j++)
的解释如下:
首先,让我们关注单词arrayOfInts[i].length
我已经告诉过你arrayOfInts
是一个数组数组。因此,arrayOfInts[i]
指向i
数组。arrayOfInts[i].length
一词返回i
数组{arrayOfInts
中的长度(即数组中元素的数量) 1}}。
循环继续发生,直到j
小于1d数组中的元素数(小于(不使用等于),因为arrayOfInts [i] [0]将是第一个元素)。< BR />