【问题标题】:For each loop using 2D array对于使用二维数组的每个循环
【发布时间】:2012-11-03 05:40:37
【问题描述】:

这是Java代码的sn-p:

int[][] uu = new int[1][1];
uu[0][0] = 5;
for(int[] u: uu){
    System.out.println(u[0]);
}

它打印了5。但是为什么for循环的声明部分声明为as int[] u,而不是as int[][] u

在你引用二维数组的 uu... 那不是功课。我正在准备 Java 认证。 干杯

【问题讨论】:

  • 只是一个愚蠢的建议:- 它不是 Java 中的 2-D array。它是array of array
  • 是用array in array的方式实现的,书上叫二维数组。
  • @uml.. 可能是,但array of array 仍然是一个更好的名称。你将来会知道的。 :)
  • @uml 我知道很多书都称它为二维数组,如果我在 Java 程序中需要一个二维数组,我会将它映射到这个结构,但它确实是一个数组数组,那样想会好得多。例如,如果您将 for 循环视为遍历一个数组,每个数组的元素都是一个 int[],那么您的问题的答案就显而易见了。

标签: java arrays foreach


【解决方案1】:

因为您的uuarray of array。所以,当你迭代它时,你会首先得到一个array,然后你可以迭代那个数组来得到单个元素。

因此,您的外部循环具有 int[] 作为类型,因此具有该声明。如果您在另一个内部循环中遍历您的u,您将获得int 类型:-

for (int[] u: uu) {
    for (int elem: u) {
        // Your individual element
    }
}

【讨论】:

    【解决方案2】:

    这是因为uuint[] 数组的数组。所以里面的每一项都是int[]。在 for 循环中,您声明您迭代的数组中的项目的类型。

    【讨论】:

      【解决方案3】:

      循环正在迭代uu 的元素,这些元素是int[] 类型的对象。 (或者换句话说 - uuu 中的一个元素,因此它是一个 int[])。

      声明始终是迭代检索到的对象的类型 - 在这种情况下 - 它是 int[] -

      与迭代 int[] 相同的是:

       for (int x : myArray) { ...}
      

      因为x 的每个元素都是int 类型。

      【讨论】:

        【解决方案4】:

        “为什么for循环的声明部分声明为int[] u,而不声明为int[][] u?”

        数组是二维的,因此您正在处理双层迭代。您在另一个“内部”有一个数组,其原理与 List<List<Integer>> 的工作原理相同。

        要遍历所有元素,您应该考虑行元素结构。有必要从容器中获取每一行,然后从每一行中获取每个元素。

        for(int[] u: uu) 只是一个for-each 迭代行,与for(int row = 0; row < container.length; row++) 的原理相同,u 或分别container[row] 不是元素本身,而是元素的行(数组)。这意味着您需要第二个迭代层来获取元素:

        int[][] container = new int[10][10];
        //... - Fill elements.
        for(int row = 0; row < container.length; row++){
          for(int element = 0; element < container[row].length; element++){
            System.out.printf("Row: %d Element: %d Value: %d\n", row, element, container[row][element]);
          }
        }
        

        【讨论】:

          猜你喜欢
          • 2011-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-24
          • 2015-03-09
          • 1970-01-01
          • 1970-01-01
          • 2019-06-02
          相关资源
          最近更新 更多