编写Java程序实现回形方阵。通过程序输入方阵的阶数,程序输入该方阵
时间: 2024-09-08 17:04:21 浏览: 63
在Java中,我们可以编写一个简单的程序来生成并打印回文矩阵(即正读反读都一样的矩阵)。这里是一个示例,它首先会提示用户输入矩阵的行数和列数,然后生成并显示对应的回文矩阵:
```java
import java.util.Scanner;
public class PalindromeMatrix {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 提示用户输入矩阵的行数和列数
System.out.print("请输入回形矩阵的行数:");
int rows = scanner.nextInt();
System.out.print("请输入回形矩阵的列数:");
int cols = scanner.nextInt();
// 创建二维数组表示矩阵
int[][] matrix = generatePalindromeMatrix(rows, cols);
// 打印矩阵
printMatrix(matrix);
}
// 生成回形矩阵的方法
public static int[][] generatePalindromeMatrix(int rows, int cols) {
if (rows < cols) {
int temp = rows;
rows = cols;
cols = temp;
}
int[][] palindrome = new int[rows][];
for (int i = 0; i < rows; i++) {
palindrome[i] = new int[cols];
if (i <= rows / 2) { // 上半部分填充递增序列
for (int j = 0; j < i + 1; j++) {
palindrome[i - j][j] = j * 2 + 1; // 对角线元素为奇数
if (j > 0) {
palindrome[i - j][j - 1] = palindrome[i - j][j] - 1; // 左上到右下对角线元素差1
}
}
} else { // 下半部分填充递减序列
for (int j = cols - 1; j >= 0; j--) {
palindrome[i - (rows - 1 - j)][j] = rows * 2 - 1 - (i - (rows - 1 - j)) * 2; // 中心元素为主对角线最后一个
if (i - (rows - 1 - j) > 0) {
palindrome[i - (rows - 1 - j)][j + 1] = palindrome[i - (rows - 1 - j)][j] + 1; // 右下到左上的对角线元素差1
}
}
}
}
return palindrome;
}
// 打印矩阵的方法
public static void printMatrix(int[][] matrix) {
for (int[] row : matrix) {
for (int element : row) {
System.out.print(element + " ");
}
System.out.println();
}
}
}
```
当你运行这个程序,并按照提示输入矩阵的行数和列数,它将生成并打印出指定大小的回形矩阵。
阅读全文