【问题标题】:Print multi-dimensional array using foreach [duplicate]使用foreach打印多维数组[重复]
【发布时间】:2012-09-27 11:11:49
【问题描述】:

如何在java中使用for-each循环打印多维数组?我试过了,foreach 适用于普通数组但不适用于多维数组,我该怎么做?我的代码是:

class Test
{
   public static void main(String[] args)
   {
      int[][] array1 = {{1, 2, 3, 4}, {5, 6, 7, 8}};
      for(int[] val: array1)
      {
        System.out.print(val);
      }
   } 
}

【问题讨论】:

  • 你能举一个你想看到的输出的例子吗?
  • 什么不起作用?你有错误吗?如果是这样发布它。如果它没有输出您期望的内容,请发布它打印的内容以及您期望的内容。
  • 对不起,我无法上传照片,但输出的是:G:\santoo>javac Test.java Test.java:6: error: incompatible types for(int[][] val: array1) ^ required : int[][] found: int[] 1 错误
  • @SanthoshKumar 你用的是什么版本的java? G:\santoo>java -version?
  • 请尝试我的序列化解决方案(下)

标签: java multidimensional-array foreach


【解决方案1】:

当前的输出类似于:

[I@1e63e3d
...

显示整数数组的字符串表示形式。

您可以使用Arrays.toString 来显示数组内容:

for (int[] val : array1) {
   System.out.println(Arrays.toString(val));
}

【讨论】:

    【解决方案2】:

    您的循环将通过打印地址来打印每个子数组。给定内部数组,使用内部循环:

    for(int[] arr2: array1)
    {
        for(int val: arr2)
            System.out.print(val);
    }
    

    数组没有String 表示,例如打印所有元素。您需要明确打印它们:

    int oneD[] = new int[5];
    oneD[0] = 7;
    // ...
    
    System.out.println(oneD);
    

    输出是一个地址:

    [I@148cc8c
    

    但是,libs do 为此提供了 deepToString 方法,因此这也可能适合您的目的:

    System.out.println(Arrays.deepToString(array1));
    

    【讨论】:

      【解决方案3】:

      这是一种非常通用的方法,适用于大多数语言。您将不得不使用嵌套循环。外循环访问数组的行,而内循环访问该行中的元素。然后,只需将其打印出来并为每一行开始一个新行(或选择您想要打印的任何格式)。

      for (int[] arr : array1) {
        for (int v : arr) {
          System.out.print(" " + v);
        } 
        System.out.println();
      }
      

      【讨论】:

      • @MartijnPieters 绝对同意,这似乎是我的旧答案。 ;) 希望修复它。
      【解决方案4】:

      如果只想将int数组中包含的数据打印到日志中,可以使用

      Arrays.deepToString
      

      不使用任何 for 循环。

      工作代码。

      import java.util.*;
      public class Main
      {
         public static void main(String[] args)
         {
            int[][] array = {{1, 2, 3, 4}, {5, 6, 7, 8}};
              System.out.println(Arrays.deepToString(array));
         } 
      }
      

      输出

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

      【讨论】:

        猜你喜欢
        • 2018-05-10
        • 1970-01-01
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多