15

如何在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);
      }
   } 
}
4

4 回答 4

12

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

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

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

System.out.println(Arrays.deepToString(array1));
于 2012-10-06T14:44:21.933 回答
9

如果只想将 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]]
于 2012-10-06T14:52:40.100 回答
4

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

for (int[] arr : array1) {
  for (int v : arr) {
    System.out.print(" " + v);
  } 
  System.out.println();
}
于 2012-10-06T14:49:24.970 回答
2

当前输出看起来像:

[I@1e63e3d
...

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

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

for (int[] val : array1) {
   System.out.println(Arrays.toString(val));
}
于 2012-10-06T14:44:19.187 回答