0

谁能解释一下下面代码中的以下语句是什么意思..??

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");
            }
        }
    }
4

6 回答 6

2

Java 并没有真正的多维数组,它有可以包含其他数组的数组。该代码i从误导性名称中获取第 th 项arrayOfInts。这个项目本身就是一个整数数组,所以它取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.)
于 2013-02-16T13:06:17.593 回答
1

Java 中没有多维数组。所有的都是数组的数组。

arrayOfInts就是这样一个整数数组。arrayOfInts[i]整数数组也是如此,并且

for (j = 0; j < arrayOfInts[i].length; j++)

迭代这个数组的每个元素,即它迭代存储在整数数组的索引处的整数数组中的所有元素i

你可以把它看成一个包含 N 个小盒子的大盒子,每个小盒子包含给定数量的整数。arrayOfInt是大盒子。arrayOfInt[i]i大盒子中的第一个小盒子。并且循环遍历这个较小盒子中的每个整数。

于 2013-02-16T13:06:09.857 回答
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] |
 +-----+    +-----+-----+-----+-----+
于 2013-02-16T13:05:08.943 回答
0

j = 0; j < arrayOfInts[i].length

因为你的数组是二维的,数组的内部元素将是数组。

所以你得到元素(这是数组)arrayOfInts[i] 并计算长度 arrayOfInts[i].length,换句话说:

int[] 元素 = arrayOfInts[i]; 整数长度 = arrayOfInts[i].length;

于 2013-02-16T13:07:27.473 回答
0

将 arrayOfInts[i][j] 视为二维网格,就像电子表格一样。为了帮助可视化,假设 [j] 表示列索引,[i] 表示行索引。

那么解释是:

// iterate through every column j in the current row i:
for (j = 0; j < arrayOfInts[i].length; j++)
于 2013-02-16T13:09:03.133 回答
0

在您的代码中,请参见int [][]arrayOfInts=...
It is a 2-dimensional array。
二维数组只不过是arrays of arrays
它意味着将有许多正常的一维数组,另一个数组具有每个一维数组的引用。
所以,线的解释,for(j=0;j<arrayOfInts[i].length;j++)如下:
首先,让我们把重点放在arrayOfInts[i].length
我已经告诉你的单词arrayOfInts是数组数组。因此,arrayOfInts[i]指向i第 th 数组。单词,返回第th数组arrayOfInts[i].length中的长度(即数组中的元素数)。 循环继续发生,直到小于 1d 数组中的元素数(小于(不要使用等于),因为 arrayOfInts[i][0] 将是第一个元素)。iarrayOfInts
j

于 2013-02-16T13:16:04.447 回答