当前位置:首页 > 后端开发 > 正文

java 怎么打印矩阵

在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(); // 换行 } } }

输出结果:

java 怎么打印矩阵 第1张

关键点

  • 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字形矩阵) 需额外控制遍历顺序


常见错误避坑

  1. 列数不一致问题

    非矩形矩阵需单独处理列数:

    java 怎么打印矩阵 第2张

    java 怎么打印矩阵 第3张

  2. 换行遗漏

    外层循环结束必须加 System.out.println(),否则会打印成单行。

  3. 格式化溢出

    若数字超过 printf 设定的宽度(如 %-6d 中数字超6位),会导致对齐失效,需提前计算元素最大位数。

  4. 扩展应用:矩阵转置打印

    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版标准。

0