java 怎么打印矩阵
- 后端开发
- 2025-06-09
- 5
方法1:基础嵌套循环(推荐新手)
public class PrintMatrix { public static void main(String[] args) { int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; for (int i = 0; i < matrix.length; i++) { // 遍历行 for (int j = 0; j < matrix[i].length; j++) { // 遍历列 System.out.print(matrix[i][j] + " "); // 打印元素 + 空格 } System.out.println(); // 换行进入下一行 } } }
输出结果:
1 2 3 4 5 6 7 8 9
优势:灵活控制格式,适合自定义分隔符。
方法2:使用 Arrays.deepToString()
import java.util.Arrays; public class PrintMatrix { public static void main(String[] args) { int[][] matrix = { {10, 20}, {30, 40} }; System.out.println(Arrays.deepToString(matrix)); } }
输出结果:
[[10, 20], [30, 40]]
适用场景:快速调试,但输出为单行嵌套数组结构,可读性较低。
方法3:格式化对齐(专业排版)
public class PrintMatrix { public static void main(String[] args) { int[][] matrix = { {100, 2, 30}, {4, 555, 6}, {7, 8, 999} }; for (int[] row : matrix) { // 遍历行 for (int num : row) { // 遍历列 System.out.printf("%-6d", num); // 左对齐6字符宽度 } System.out.println(); // 换行 } } }
输出结果:

关键点:
- printf 配合 %-6d 实现左对齐固定宽度
- 避免数字位数不同导致的排版错乱
方法4:特殊矩阵打印(蛇形/螺旋矩阵)
蛇形矩阵示例:
public static void printSnakeMatrix(int[][] matrix) { for (int i = 0; i < matrix.length; i++) { if (i % 2 == 0) { // 偶数行正序 for (int j = 0; j < matrix[i].length; j++) { System.out.print(matrix[i][j] + "t"); } } else { // 奇数行倒序 for (int j = matrix[i].length - 1; j >= 0; j--) { System.out.print(matrix[i][j] + "t"); } } System.out.println(); } }
输出样例(输入3×3矩阵):
1 2 3 6 5 4 7 8 9
方法对比与选型建议
| 方法 | 适用场景 | 注意事项 |
|---|---|---|
| 嵌套循环 | 通用场景,需自定义格式 | 手动处理换行和空格 |
| deepToString() | 快速调试 | 输出非矩阵布局,可读性差 |
| printf格式化 | 需对齐的数字矩阵/商业报表 | 需预估元素最大宽度 |
| 特殊逻辑 | 算法题(螺旋/蛇形/Z字形矩阵) | 需额外控制遍历顺序 |
常见错误避坑
-
列数不一致问题
非矩形矩阵需单独处理列数:


-
换行遗漏
外层循环结束必须加 System.out.println(),否则会打印成单行。
-
格式化溢出
若数字超过 printf 设定的宽度(如 %-6d 中数字超6位),会导致对齐失效,需提前计算元素最大位数。
扩展应用:矩阵转置打印
public static void printTransposed(int[][] matrix) { for (int j = 0; j < matrix[0].length; j++) { // 先遍历列 for (int i = 0; i < matrix.length; i++) { // 再遍历行 System.out.print(matrix[i][j] + " "); } System.out.println(); } }
通过合理选择上述方法,可高效解决Java矩阵打印需求,基础业务场景推荐嵌套循环+格式化,特殊需求可结合遍历顺序调整逻辑,确保输出清晰直观。
引用说明:本文代码示例基于Java 17语法,Arrays.deepToString()文档参考Oracle官方数组指南,格式化语法遵循《Java核心技术卷I》第10版标准。