两种思路方式
方法一:通过坐标的形式来实现二维数组的赋值以及遍历
Scanner input = new Scanner(System.in);
int len = input.nextInt();
//初始化声明二维数组
int[][] arry = new int[len][len];
//通过坐标的方式给数组赋值来实现回形数
int count=0;//初始化声明一个变量,后面用来给二维数组赋值
int maxX=len-1;//最大的x轴坐标
int maxY=len-1;//最大的y轴坐标
int minX=0;//最小的x轴坐标
int minY=0;//最下的y轴坐标
while(minX<maxX){
for(int x= minX; x <= maxX; x++){ //给二维数组赋值,此时y=0,不变,x++;
arry[minY][x]=++count;//赋值
}
minY++;
for(int y = minY; y <= maxY; y++){
arry[y][maxX]=++count;
}
maxX--;
for(int x = maxX; x >= minX; x--){
arry[maxY][x]=++count;
}
maxY--;
for(int y = maxY; y >= minY; y--){
arry[y][minX]=++count;
}
minX++;
}
for(int i = 0; i<arry.length; i++){
for(int j = 0; j<arry[i].length; j++){
Sy