📜  Java程序以蛇模式打印矩阵(1)

📅  最后修改于: 2023-12-03 14:43:03.258000             🧑  作者: Mango

Java程序以蛇模式打印矩阵

在Java编程中,经常需要打印矩阵。本文介绍一种以蛇模式打印矩阵的方式。

实现思路

蛇模式打印矩阵是指按照蛇形的方式,从矩阵左上角开始逐个元素地输出全部矩阵元素。具体实现方法如下:

  1. 定义一个二维数组来存储矩阵。
  2. 定义两个变量 rowcol,分别表示当前输出元素的行号和列号。
  3. 定义一个变量 direction,表示当前输出方向。初始值为向右。
  4. 按照蛇模式输出矩阵:
    • 如果 direction 向右,则先从左往右输出一行,然后把 row 的值加1,将 direction 调整为向下。
    • 如果 direction 向下,则先从上往下输出一列,然后把 col 的值减1,将 direction 调整为向左。
    • 如果 direction 向左,则先从右往左输出一行,然后把 row 的值减1,将 direction 调整为向上。
    • 如果 direction 向上,则先从下往上输出一列,然后把 col 的值加1,将 direction 调整为向右。
  5. 重复步骤4,直到输出全部矩阵元素。
代码实现

下面是Java代码实现蛇模式打印矩阵的方法,方法中的参数 matrix 表示待打印的矩阵,该方法会按蛇形方式输出矩阵中的所有元素。

public static void printMatrix(int[][] matrix) {
    int row = 0; // 当前输出元素的行号
    int col = 0; // 当前输出元素的列号
    int direction = 1; // 当前输出方向,1 表示向右,2 表示向下,3 表示向左,4 表示向上
    int rowCount = matrix.length; // 矩阵的行数
    int colCount = matrix[0].length; // 矩阵的列数
    for (int i = 0; i < rowCount * colCount; i++) { // 输出全部矩阵元素
        System.out.print(matrix[row][col] + " "); // 输出当前元素
        if (direction == 1) { // 向右输出
            if (col == colCount - 1) { // 如果到了最右边,则向下
                row++; // 行号加1
                direction = 2; // 调整方向
            } else { // 否则继续向右
                col++; // 列号加1
            }
        } else if (direction == 2) { // 向下输出
            if (row == rowCount - 1) { // 如果到了最下边,则向左
                col--; // 列号减1
                direction = 3; // 调整方向
            } else { // 否则继续向下
                row++; // 行号加1
            }
        } else if (direction == 3) { // 向左输出
            if (col == 0) { // 如果到了最左边,则向上
                row--; // 行号减1
                direction = 4; // 调整方向
            } else { // 否则继续向左
                col--; // 列号减1
            }
        } else { // 向上输出
            if (row == 0) { // 如果到了最上边,则向右
                col++; // 列号加1
                direction = 1; // 调整方向
            } else { // 否则继续向上
                row--; // 行号减1
            }
        }
    }
}
使用示例

下面是一个使用示例,该示例创建了一个3×3的矩阵,然后调用 printMatrix 方法按蛇模式打印矩阵中的所有元素。

int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
printMatrix(matrix);

该示例将输出以下结果:

1 2 3 6 5 4 7 8 9