……求java源码…………………………………………………………………………………………………………………………………………………………………………………………………………
mport java.util.*;
public class Test8_1 {
int number=1;
int a[][]=new int[20][20];
public void doit(int m,int i1,int i2)
{
if(m<0) return;
if(m==1)
a[i1][i2]=number;
else
{
for(int i=0;i<m;i++)//top
a[i1][i2+i]=number++;
for(int i=0;i<m-1;i++)//right
a[i+i1+1][m+i2-1]=number++;
for(int i=0;i<m-1;i++)//bottom
a[m+i1-1][m+i2-2-i]=number++;
for(int i=0;i<m-2;i++)//left
a[m+i1-i-2][i2]=number++;
}
doit(m-2,i1+1,i2+1);
}
public void print(int m)
{
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args){
System.out.println("输入数字(1-20):");
Scanner input=new Scanner(System.in);
int num=input.nextInt();
Test8_1 t=new Test8_1();
t.doit(num,0,0);
t.print(num);
}
}
自己看吧。
import java.util.Scanner;
public class LuoXuan {
private int init=1;
private int[][] array=new int[20][20];
public void fillNumber(int number,int i,int j,int m,int n){
if(number<=0)
return;
if(number==1)
array[i][j]=init;
else{
//上行
for(;j<m;j++)
array[i][j]=init++;
//右竖
for(j--,i++;i<m;i++)
array[i][j]=init++;
//下行
for(i--,j--;j>=n;j--)
array[i][j]=init++;
//左竖
for(j++,i--;i>n;i--)
array[i][j]=init++;
}
fillNumber(number-2, i+1, j+1,number-1,n+1);
}
public void printNumber(int number){
for(int i=0;i<number;i++){
for(int j=0;j<number;j++)
System.out.print(array[i][j]+" ");
System.out.println();
}
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("please input the number of line:");
int number=scanner.nextInt();
LuoXuan luoXuan=new LuoXuan();
luoXuan.fillNumber(number, 0, 0,number,0);
luoXuan.printNumber(number);
}
}