如何在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);
}
}
}
答案 0 :(得分: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]]
答案 1 :(得分:8)
您的循环将打印每个子阵列,方法是打印其地址。给定内部数组,使用内部循环:
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 做为此目的提供方法deepToString
,所以这也可能适合您的目的:
System.out.println(Arrays.deepToString(array1));
答案 2 :(得分:4)
这是一种非常通用的方法,适用于大多数语言。您将不得不使用嵌套循环。外部循环访问数组的行,而内部循环访问该行中的元素。然后,只需将其打印出来并为每一行开始一个新行(或选择您想要打印的任何格式)。
for (int[] arr : array1) {
for (int v : arr) {
System.out.print(" " + v);
}
System.out.println();
}
答案 3 :(得分:2)
当前输出看起来像:
[I@1e63e3d
...
显示整数数组的字符串表示形式。
您可以使用Arrays.toString
来显示数组内容:
for (int[] val : array1) {
System.out.println(Arrays.toString(val));
}