题目
请输入一个整数:4
PrintMatrix:->
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
public class PrintMatrixDemo {
@SuppressWarnings({ "unused", "resource" })
public static void main(String[] args) {
System.out.print("请输入一个整数:");
Scanner sc = new Scanner(System.in);
while(true) {
int n = sc.nextInt();
//校验数字是否合法
if(n == -1){
break;
}
//创建n行n列二维数组
int[][] arrays = new int[n][n];
//初始化坐标
int i=0; int j=0;
//初始化方向 0-左右;1-上下;2-右左; 3-下上
int direc = 0;
arrays[i][j] = 1;
//赋值过程
for(int step=2;step<=n*n;step++) {
if(direc == 0) {
//判断是否到边界
if((j == n-1) || arrays[i][j+1]!=0) {
//本行不在赋值,需要改变方向
direc = 1;
//赋值失败,不允许累加
step--;
}else {
j++;
arrays[i][j]=step;
}
continue;
}
if(direc == 1) {
if((i == n-1) || arrays[i+1][j]!=0) {
direc = 2;
step--;
}else {
i++;
arrays[i][j]=step;
}
continue;
}
if(direc == 2) {
if(j==0 || arrays[i][j-1]!=0) {
direc = 3;
step--;
}else {
j--;
arrays[i][j]=step;
}
continue;
}
if(direc == 3) {
if(i==0 || arrays[i-1][j] != 0) {
direc = 0;
step--;
}else {
i--;
arrays[i][j]=step;
}
continue;
}
}
System.out.println("PrintMatrix:->");
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
System.out.print(arrays[i][j]+"\t");
}
System.out.println("");
}
}
}
}