| 
 
| 复制代码<font color="#800080"><p style="line-height: 30px; text-indent: 2em;"></p><div style="text-align: center;"><span style="line-height: 2.2em;"><p style="line-height: 30px; text-indent: 2em;"></p><div style="text-align: left;"><span style="line-height: 2.2em;">import java.util.Scanner;</span></div></span></div>
public class luoxuan {
  public static void main(String[] args) {
          //scanner键盘输入整数,
          Scanner sc = new Scanner(System.in);
          int N = sc.nextInt();
          //定义变量和数组
          int num =1;
          int [][] arr = new int [N][N];
          int m =0,i,j;
          //判断输入整数的奇偶。
          if(N%2 == 0)
                  m = N/2;
          else
                  m = N/2+1;
          // ^ --->
          // |      |
          // <--- v
          //就是个圈圈,每走一行或一列,都会少一,看下面代码就知道很多都是对应的。
          for(i=0 ; i<= m-1 ; i++)
          {
                  for(j =i ; j <=N-i-1 ;j++)//--> 0行,行不变,列变arr的i是固定的j在变,
                  {
                          arr[i][j] = num;
                          num++;
                  }
                  for(j =i+1 ; j <=N-i-1 ;j++)//| N-i-1列,就是最右侧一列,不变,行在变j。
                  {
                          arr[j][N-i-1] = num;
                          num++;
                  }
                  for(j =N-i-2 ; j >=i ;j--)//<-- N-i-1行不变,j列在变,逐渐在缩小,
                  {
                          arr[N-i-1][j] = num;
                          num++;
                  }
                  for(j =N-i-2 ; j >=i+1 ;j--)//| 第i列不变,行在逐渐缩小。
                  {
                          arr[j][i] = num;
                          num++;
                  }
          }
          for(i =0 ; i <N ;i++)
          {
                  for(j =0 ;j <N ;j++)
                  {
                          System.out.print(arr[i][j]+"\t");//打印数组数据。
                  }
                  //打印空换行。
                  System.out.println("");
          }
          //关闭Scanner
          sc.close();
        
  }
}</font>
 
 | 
 |