Java 代码生成螺旋矩阵 - 矩阵元素占位符

本文提供 Java 代码,用于生成给定自然数 n 的螺旋矩阵。矩阵元素将以 4 位宽度显示,确保对齐和可读性。

示例输出:

对于 n = 5,生成的矩阵为:

 1   2   9  10  25
 4   3   8  11  24
 5   6   7  12  23
 16  15  14  13  22
 17  18  19  20  21

代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int[][] matrix = generateMatrix(n);
            printMatrix(matrix);
        }
        sc.close();
    }

    private static int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        int num = 1;
        int left = 0, right = n - 1, top = 0, bottom = n - 1;
        while (num <= n * n) {
            for (int i = left; i <= right; i++) {
                matrix[top][i] = num;
                num++;
            }
            top++;
            for (int i = top; i <= bottom; i++) {
                matrix[i][right] = num;
                num++;
            }
            right--;
            for (int i = right; i >= left; i--) {
                matrix[bottom][i] = num;
                num++;
            }
            bottom--;
            for (int i = bottom; i >= top; i--) {
                matrix[i][left] = num;
                num++;
            }
            left++;
        }
        return matrix;
    }

    private static void printMatrix(int[][] matrix) {
        int n = matrix.length;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.printf("%4d", matrix[i][j]);
            }
            System.out.println();
        }
    }
}

代码解释:

  1. generateMatrix(int n):

    • 创建一个 n x n 的二维数组 matrix 来存储矩阵元素。
    • 使用变量 num 来跟踪要写入矩阵的下一个数字,初始值为 1。
    • 使用变量 left、right、top、bottom 来跟踪螺旋遍历的边界。
    • 使用 while 循环,直到所有数字都填充到矩阵中。
    • 在每个循环中,依次从左到右、从上到下、从右到左、从下到上填充矩阵的边界,并更新边界变量。
  2. printMatrix(int[][] matrix):

    • 使用嵌套循环遍历矩阵,并使用 System.out.printf("%4d", matrix[i][j]) 格式化输出每个元素,确保每个元素占 4 位宽度。

代码的应用:

本代码可以用于生成螺旋矩阵,并以格式化的方式打印输出。它可以应用于各种需要生成和展示矩阵的场景,例如算法学习、图形处理等。


原文地址: https://www.cveoy.top/t/topic/nY29 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录