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

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]]

适用场景:快速调试,但输出为单行嵌套数组结构,可读性较低。

java 怎么打印矩阵  第1张


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

常见错误避坑

  1. 列数不一致问题
    非矩形矩阵需单独处理列数:

    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[i].length; j++) { // 用 matrix[i].length 而非固定值
            // ...
        }
    }
  2. 换行遗漏
    外层循环结束必须加 System.out.println(),否则会打印成单行。

  3. 格式化溢出
    若数字超过 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版标准。

0