要求:
从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出: 1 2
4 3
输入数字3,则程序输出: 1 2 3
8 9 4
7 6 5
实现效果:
实现代码:
import java.util.Scanner;
public class mianshiShe {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("从键盘输入一个整数(1~20):");
int n = scanner.nextInt();
int[][] arr = new int[n][n];
int num = 0;//应显示的数据
int Min_X = 0;//x轴最小值
int Min_Y = 0;//y轴最小值
int Max_X = n-1;//x轴最大值
int Max_Y = n-1;//y轴最大值
while (Min_X<=Max_X) {
for (int i = Min_X; i <= Max_X; i++) {
arr[Min_Y][i] = ++num;
}
Min_Y++;
for (int i = Min_Y; i <= Max_Y; i++) {
arr[i][Max_X] =++ num;
}
Max_X--;
for (int i = Max_X; i >= Min_X; i--) {
arr[Max_Y][i] = ++num;
}
Max_Y--;
for (int i = Max_Y; i >=Min_Y; i--) {
arr[i][Min_X] = ++num;
}
Min_X++;
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
// String space = (arr[i][j] + "").length() == 1 ? "0" : "";//如果是一位数的在前面给补个零
System.out.print(arr[i][j]+"\t");
// System.out.print(space + arr[i][j]+" ");
}
System.out.println();
}
}
}
代码思路辅助图: