上一篇                     
               
			  java 怎么打印矩阵
- 后端开发
- 2025-06-09
- 3386
 在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版标准。
 
  
			