例:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
受https://blog.csdn.net/zz1017161726/article/details/45288823启发,代码如下:
编译后加参数运行 java SpiralArray 5
import java.util.ArrayList;
import java.util.List;
class SpiralArray {
public static void main(String[] args) {
if(args.length == 0){
System.out.println("请输入参数");
return;
}
int num;
try{
num = Integer.parseInt(args[0]);
}catch(NumberFormatException e){
System.out.println("请输入数字");
return;
}
if(num < 2 || num > 50){
System.out.println("请输入2-50的整数");
return;
}
soutSpiralArray(num);
}
private static void soutSpiralArray(int num){
boolean xlock = true;
boolean ylock = true;
int x = 0;
int y = 0;
int n = 1;
int m = 1;
int[][] arr = new int[num][num];
while(n <= num*num){
arr[x][y] = n;
if(y < num - m && ylock){
y ++;
}else if(x < num - m && xlock){
x ++;
}else if(y >= m){
y --;
xlock = false;
ylock = false;
}else if(x >= 0){
x --;
if(x == m){
xlock = true;
ylock = true;
m ++;
}
}
n ++;
}
for(int i = 0; i < num; i++){
for(int j = 0; j < num; j++){
System.out.print(arr[i][j]+",");
if(j == num -1){
System.out.println();
}
}
}
}
}