上一篇
java 怎么打印矩阵
- 后端开发
- 2025-06-09
- 3888
在Java中打印矩阵通常使用嵌套循环遍历二维数组的行和列,外层循环控制行,内层循环处理当前行的每个元素,使用System.out.print()输出元素(可添加空格分隔),每行结束后用System.out.println()换行。
方法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(); // 换行 } } }
输出结果:
100 2 30
4 555 6
7 8 999
关键点:
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字形矩阵) | 需额外控制遍历顺序 |
常见错误避坑
-
列数不一致问题
非矩形矩阵需单独处理列数:for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { // 用 matrix[i].length 而非固定值 // ... } }
-
换行遗漏
外层循环结束必须加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版标准。