package array_pratice;
import java.util.Scanner;
/**
* 回形数格式方阵的实现
* 从键盘输入一个整数(1~20)
* 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出:
* 1 2
* 4 3
* 输入数字3,则程序输出:
* 1 2 3
* 8 9 4
* 7 6 5
* 输入数字4, 则程序输出:
* 1 2 3 4
* 12 13 14 5
* 11 16 15 6
* 10 9 8 7
*/
public class RectangleTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数");
int len = scanner.nextInt();
doRectangle0(len);
}
private static void doRectangle0(int len){
int[][] arr = new int[len][len];
int count =len*len;
//默认向右 1 向右 2 向下 3 向左 4 向上
int arrow =1;
int x=0;
int y=0;
for (int val = 1; val <= count; val++) {
/**
* * 1 2 3
* * 8 9 4
* * 7 6 5
*/
if(arrow==1){
//0<9 && [0][0]==0
if(y<len&&arr[x][y]==0){
arr[x][y++]=val;
//arr[0][1]=1;
}
else{
arrow=2;
x++;
y--;
val--;
}
}
else if(arrow==2){
if (x < len && arr[x][y] == 0) {
arr[x++][y] = val;
} else {
arrow = 3;
x--;
y--;
val--;
}
} else if (arrow == 3) {
if (y >= 0 && arr[x][y] == 0) {
arr[x][y--] = val;
} else {
arrow = 4;
x--;
y++;
val--;
}
} else if (arrow == 4) {
if (x >= 0 && arr[x][y] == 0) {
arr[x--][y] = val;
} else {
arrow = 1;
x++;
y++;
val--;
}
}
}
for (int x0 = 0; x0 < arr.length; x0++) {
for (int y0 = 0; y0 < arr[x0].length; y0++) {
System.out.print(arr[x0][y0]+"\t");
}
System.out.println();
}
}
}