import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/4 17:13 * @description: * @version:$ */ /*编写程序并生成10X10的螺旋矩阵*/ public class page1101 { public void snake(int n) { int[][] data = new int[n][n];/*初始化一个数组*/ int intA;/*A代表循环的次数*/ int value = 1;/*这个螺旋开始的值就是1*/ if(n % 2 != 0) //如果输入的数是奇数那么就循环n/2+1次,A代表循环的次数 { intA = n/2 + 1; }else{ intA = n/2; //偶数循环n/2次 } for(int i = 0; i < intA; i++) //从外向里循环 当到输入的一半(或者一半加一)的时候就转弯了 { //从左到右循环 for(int j = i; j < n - i; j++)/**/ { data[i][j] = value++; } //右列从上向下循环 for(int k = i + 1; k < n - i; k++) { data[k][n-i-1] = value++; } //从右到左 for(int l = n-i-2; l >= i; l--) { data[n-i-1][l] = value++; } //从下到上 for(int m = n - i - 2; m > i; m--) { data[m][i] = value++; } } for(int i = 0; i < n; i++) //遍历输出 { for(int j = 0; j < n; j++) { System.out.print(data[i][j]+"\t"); } System.out.println(); } } public static void main(String[] args) { Scanner sin = new Scanner(System.in); page1101 sn = new page1101(); while(sin.hasNextInt()) { int n = sin.nextInt(); sn.snake(n); } } }
参考博客:https://www.cnblogs.com/iture-ming/p/5351762.html
并且在此基础上稍加修改,是结果更符合要求