如何使用for-each循环正确在控制台输出Java二维数组?
如何用for-each循环正确输出Java多维数组?
你的代码出现问题有两个核心原因:
- 内层for-each循环错误地遍历了整个二维数组
array2,而非外层循环获取到的一维子数组 - 打印时直接输出整个二维数组的默认toString结果,这会输出数组对象的内存地址(比如
[[I@7d4991ad),而非数组中的元素
正确的for-each实现方式
要输出你期望的每行0 0格式,需要在内层循环遍历外层拿到的一维子数组,并逐个打印元素:
import java.util.Arrays; public class Main { public static void main(String[] args) { int[][] array2 = new int[2][2]; // 嵌套for-each循环遍历二维数组 for (int[] subArray : array2) { // 遍历每个一维子数组的元素 for (int num : subArray) { // 打印元素,用空格分隔,不换行 System.out.print(num + " "); } // 每行遍历结束后换行 System.out.println(); } } }
输出结果
0 0 0 0
如果想去掉每行末尾的空格,可以稍作调整(比如用StringJoiner拼接元素),但上面的代码已能满足你的核心需求。
另外,若不需要手动遍历,也可以直接用Arrays.deepToString()一次性输出整个多维数组,但这不符合你要求的for-each循环方式:
System.out.println(Arrays.deepToString(array2)); // 输出:[[0, 0], [0, 0]]
内容的提问来源于stack exchange,提问作者Сonspicuous
相关产品推荐
相关产品推荐

