public static void main (String[] args){
int[][] a;
int row=0,column=0,begin=0,j,k,x=0;//row,column分别是行和列,begin是初始值,j是用户输入的数值,k,x分别在循环里用作矩阵最上边的行数和列数(以下例子都按用户输入4的情况解释)
Scanner in = new Scanner(System.in);
j = in.nextInt();
k=j; //最开始,k=j
a = new int[j][j];
while (true){ //第一次循环将j*j的矩阵最外层赋值,下一次则赋值里面的那层
for(;column<j;column++){ //先赋值第一行
begin++;
a[row][column] = begin;
// System.out.print(begin+"\t");
}
// System.out.println("");
column--;//列数-1
row++;//行数+1
for (;row<j;row++){ //在赋值 右侧列
begin++;
a[row][column] = begin;
// System.out.print(begin+"\t");
}
// System.out.println("");
column--;
row--;
for (;column>=x;column--){//赋值最下一行
begin++;
a[row][column] = begin;
// System.out.print(begin+"\t");
}
column++;
row--;
// System.out.println("");
for (;row>x;row--){//赋值最左列
begin++;
a[row][column] = begin;
// System.out.print(begin+"\t");
}
row++;
column++;//下次循环从(1,1)开始
// System.out.println("");
x++; //最上边的一行+1,例如把第一行赋值后,下一次循环就赋值第二行
j--; //列数减一
if (begin==k*k){
break;
}
}
for (int b=0;b<k;b++) {
for (int c = 0; c < k; c++){
System.out.print(a[b][c]+"\t");
}
System.out.println("");
}
}
回型数Java代码
最新推荐文章于 2024-05-12 16:57:11 发布