Java中的多维数组使用

时间:2013-02-16 13:02:43

标签: java multidimensional-array

任何人都可以解释一下以下代码中的以下语句意味着什么.. ??

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

6 个答案:

答案 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 == 323。)

答案 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 />