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]+" "); } System.out.println(); } } }