编写java程序,输入一个自然数N(1<N<9),要求输出如下的魔方阵,即边长为2*N-1,N在中心出现一次,其余位置上的数字从外向中心逐渐增大。 N=3时: 11111 12221 12321 12221 11111 N=4时: 1111111 1222221 1233321 1234321 1233321 1222221 1111111 【输入形式】从标准输入读取一个整数N。 【输出形式】向标准输出打印结果。输出符合要求的方阵,每个数字占一个字符宽度,在每一行末均输出一个回车符。 【输入样例】3 【输出样例】 11111 12221 12321 12221 11111 【样例说明】输入自然数3,则输出边长为5的方阵,3在方阵的中间出现一次,其余位置上的数字从外向中心逐渐增大。
时间: 2024-03-14 15:46:12 浏览: 402
以下是Java程序的实现:
```java
import java.util.Scanner;
public class MagicSquare {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] matrix = new int[2 * n - 1][2 * n - 1];
int num = 1;
int left = 0, right = 2 * n - 2, top = 0, bottom = 2 * n - 2;
while (num <= n) {
for (int i = left; i <= right; i++) {
matrix[top][i] = num;
matrix[bottom][i] = num;
}
for (int i = top; i <= bottom; i++) {
matrix[i][left] = num;
matrix[i][right] = num;
}
num++;
left++;
right--;
top++;
bottom--;
}
for (int i = 0; i < 2 * n - 1; i++) {
for (int j = 0; j < 2 * n - 1; j++) {
System.out.print(matrix[i][j]);
}
System.out.println();
}
}
}
```
程序先读取输入的整数n,然后创建一个2n-1行2n-1列的二维数组matrix。接着用一个循环来遍历每个数字,从1到n逐渐增大。每次循环都会将当前数字填充到四条边上,然后将边界向内收缩一格。最后,将生成的矩阵遍历一遍,输出每个数字即可。
阅读全文