- public class Test9 {
- static int n=1;
- public static void main(String[] args) {
- int n=20; //二维数组长度,名称跟上面重复了,懒得改了
- int[][] arr=new int[n][n];
- for(int x=0,y=n-1;y-x>=0;x++,y--){ //循环调用f方法
- if(y==x){ //当x=y时,则只有最中间的数没有赋值
- arr[n/2][n/2]=n*n;
- break;
- }
- f(x,y,arr);
- }
- for(int[] i:arr){ //遍历输出
- for(int j:i){
- System.out.print(j+"\t");
- }
- System.out.println();
- }
- }
- static void f(int x,int y,int[][] arr){ //指定圈数赋值
- for(int i=x;i<=y;i++,n++){
- arr[x][i]=n;
- }
- for(int i=x+1;i<=y;i++,n++){
- arr[i][y]=n;
- }
- for(int i=y-1;i>=x;i--,n++){
- arr[y][i]=n;
- }
- for(int i=y-1;i>x;i--,n++){
- arr[i][x]=n;
- }
- }
- }
复制代码
|