Java中打印二维矩阵出现内存地址而非数组内容的问题咨询
解决二维数组打印内存地址的问题
问题原因
Java里的二维数组本质是数组的数组,直接调用System.out.println()或者Arrays.toString()时,只会打印每个一维子数组的内存地址(比如[I@4617c264),而不会遍历子数组里的元素。
解决方法
使用java.util.Arrays类提供的deepToString()方法,它能递归遍历多维数组的所有元素并格式化输出。
修改后的运行代码
import java.util.Arrays; public class YourMainClass { public static void main(String[] args) { int[][] mat = {{45,101,87,12,41,0},{12,8,12,8,15,841},{-12,-1,-741,-1,0,74}}; int[][] doubledMat = Array2DHelper2.doubleMat(mat); // 使用deepToString打印完整二维数组内容 System.out.println(Arrays.deepToString(doubledMat)); } }
输出示例
[[90, 202, 174, 24, 82, 0], [24, 16, 24, 16, 30, 1682], [-24, -2, -1482, -2, 0, 148]]
额外说明
- 必须导入
java.util.Arrays包,否则无法调用deepToString()方法。 - 你的
doubleMat方法逻辑完全正确,无需修改,只需调整打印方式即可。
内容的提问来源于stack exchange,提问作者Ethan Do
相关产品推荐
相关产品推荐

