int k=1;
System.out.println("输入");
Scanner scanner = new Scanner(System.in);
int ren = scanner.nextInt();
int s=ren*ren;
int arrs[][]=new int[ren][ren];
int i=0;int j=0;
for (int m = 1; m <= s; m++) {
if (k==1){
if (j<ren&&arrs[i][j]==0) {
arrs[i][j]=m;
j++;
}else {
i++;j--;m--;k=2;
}
}else if (k==2){
if (i<ren&&arrs[i][j]==0){
arrs[i][j]=m;
i++;
}else {
i--;m--;k=3;j--;
}
}else if (k==3){
if (j>=0&&arrs[i][j]==0){
arrs[i][j]=m;
j--;
}else {
k=4;j++;i--;m--;
}
}else if (k==4){
if (i>0&&arrs[i][j]==0){
arrs[i][j]=m;
i--;
}else {
k=1;i++;j++;m--;
}
}
}
for (int g=0;g<arrs.length;++g){
for (int p = 0; p < arrs[g].length; ++p) {
System.out.println(arrs[g][p]);
}
}
}
k==3是内部条件改为if (j>=0&&arrs[i][j]==0),还有最后按g,p遍历。