【问题标题】:How to print 2D array simplest way with foreach loop?如何使用 foreach 循环以最简单的方式打印二维数组?
【发布时间】:2018-04-21 20:02:03
【问题描述】:

我想知道打印二维数组的最简单方法是什么? 我知道我们可以像下面的代码一样打印一维数组。

int[ ] numbers = {2, 3, 5, 7};    
for (int print: numbers) {
   System.out.println(print); 
}

我尝试打印下面的代码当然没有用。

int[ ][ ] numbers= { {1, 2, 3}, {4, 5, 6} }; 
for (int print: numbers) {
       System.out.println(print); 
    }

我知道我可以像下面的代码一样使用嵌套循环进行打印,但我想知道我是否可以像使用一维数组一样使用 foreach 循环。谢谢

 int[ ][ ] numbers= { {1, 2, 3}, {4, 5, 6} }; 
    for (int i = 0; i < numbers.length; i++) {
            for (int j = 0; j < numbers[i].length; j++) {
                System.out.print(numbers[i][j] + " ");
            }
            System.out.println();
        }
}

【问题讨论】:

    标签: java arrays loops foreach 2d


    【解决方案1】:

    在二维数组中,第一个循环中的每个元素都是一维数组,在第二个循环中,每个元素本身就是一个数字:

    int[][] array2d = {{1, 2, 3}, {4, 5, 6}};
    for (int[] array : array2d) {
        for (int element : array) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
    

    其实还有一个更好的方法是使用Arrays::toString库方法:

    int[][] numbers = {{1, 2, 3}, {4, 5, 6}};
    for (int[] array : numbers) {
        System.out.println(Arrays.toString(array));
    }
    

    【讨论】:

    • 谢谢@J-Alex!这是我过去 45 分钟一直在尝试做的事情 :)
    【解决方案2】:

    使用 foreach 循环打印二维数组的最简单方法:

    示例:

     public class Print2DArr {
    
    
                public static void main(String[] args) {
                    // TODO Auto-generated method stub
    
                             int[ ][ ] numbers= { {1, 2, 3}, {4, 5, 6} }; 
                                  for (int[] arr:  numbers) {
                                  for (int num :  arr ) {
                                  System.out.print(num +  " ");
                        }
                        System.out.println();
                    }
                 }
    
              }
    

    输出:

    1 2 3 
    4 5 6 
    

    但是,这些库确实为此目的提供了 deepToString 方法,因此这也可能适合您的目的:

    public class Print2DArr {
    
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
                     int[ ][ ] numbers= { {1, 2, 3}, {4, 5, 6} }; 
                       System.out.println(Arrays.deepToString(numbers));
    
    }
    

    输出:

    [[1, 2, 3], [4, 5, 6]]
    

    【讨论】:

    • 试试我的第二个目的!
    【解决方案3】:

    你也可以使用Stream.of():

    Stream.of(new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}).forEach(x -> {
            System.out.println(Arrays.toString(x));
        });
    Output: [1, 2, 3]
            [4, 5, 6]
            [7, 8, 9]
    

    但Arrays.deepToString() 是我认为更好的方式。

    System.out.println(
            Arrays.deepToString(
                new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
            ));
    Output: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    

    【讨论】:

      【解决方案4】:

      这是我尝试使用 foreach 循环打印二维数组:

      public class MyClass
      {
      
          public static void main(String[] args)
          {
              int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
      
              // To access the elements of the myNumbers array,
              // specify two indexes: one for the array, and one
              // for the elements inside that array.
      
              for(int i : myNumbers[0]) // Here accessing the first array with index 0:
              {
                  System.out.println(i);
              }
              for(int j : myNumbers[1]) // Here accessing the second array with index 1:
              {
                  System.out.println(j);
              }
          }
      }
      

      输出: 1 2 3 4 5 6 7

      【讨论】:

      • 与此处的其他答案相比,您需要提前知道在myNumbers 中嵌套了两个数组。如果你要添加另一个,它不会被打印出来,如果你删除一个(或两个)嵌套数组,代码会崩溃。
      猜你喜欢
      • 1970-01-01
      • 2011-08-21
      • 2015-08-12
      • 2020-06-12
      • 2019-03-16
      • 2015-06-12
      • 1970-01-01
      • 2013-11-08
      相关资源
      最近更新 更多