输入:N的值为:4

输入:  

1  12  11 10

2  13 16    9  

3  14 15    8 

4  5  6  7

分析:找出每一圈的规律,假设每一条边有k个元素,则第i圈的边上的元素为,将矩阵的每一圈分成两个半圈,则每一个半圈的元素为2k-1,前一个半圈的角标依次递加,后一个半圈的角标依次递减。

 1 package pack;
 2 import java.util.*;
 3 
 4 public class demo_1 {
 5     public static void main(String[] args) {
 6     Scanner in=new Scanner(System.in);//创建一个可以从键盘输入的类 in;
 7     int a[][] = new int [100][100];
 8     int n,k,x,t=1;//n代表矩阵的规模,x代表填入数据
 9     System.out.print("请输入N的值:");
10     n=in.nextInt();//n从键盘输入
11     k=n;
12     t=1;
13     x=1;
14     int i=0,j=0;
15     while(x<=n*n) {
16         for(int y=0;y<2*k-1;y++) {//由于矩阵的规模是n*n,并且k=n,为一条边上元素的个数,半圈为2k-1个元素
17             if(y<k) i+=t;
18             else j+=t;
19             a[i][j]=x;
20             x++;
21         }
22         t=-t;
23         k--;
24     }
25     for(int r=1;r<=n;r++) {
26         for(int s=0;s<n;s++)
27             System.out.print(a[r][s]+" ");
28         System.out.println();
29     }
30 
31 }
32 }