Java 中的多维数组用法



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

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(第二个有三个元素:234

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] 将是第一个元素(。

相关内容

  • 没有找到相关文章

最新更新