将回型数矩阵抽象为带x轴和y轴的坐标图,建议你在纸上画一下,然后按代码的思路理一遍,就懂了。
抽象图:
实现代码:
package array.guigu.demo;
import java.util.Scanner;
public class ArrayDemo05 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int n = scanner.nextInt();
//创建一个矩阵即二维数组
int[][] retNumArr = new int[n][n];
//元素计数变量
int count = 0;
//x轴最小值
int xMin = 0;
//y轴最小值
int yMin = 0;
//x轴最大值
int xMax = n - 1;
//y轴最大值
int yMax = n - 1;
//当xMin和xMax相等时回形数矩阵构成
while(xMin <= xMax) {
for(int x = xMin;x <= xMax;x++) {
retNumArr[yMin][x] = ++count;
}
yMin++;
for(int y = yMin;y <= yMax;y++) {
retNumArr[y][xMax] = ++count;
}
xMax--;
for(int x = xMax;x >= xMin;x--) {
retNumArr[yMax][x] = ++count;
}
yMax--;
for(int y = yMax;y >= yMin;y--) {
retNumArr[y][xMin] = ++count;
}
xMin++;
}
//遍历二维数组
for(int i = 0;i < retNumArr.length;i++) {
for(int j = 0;j < retNumArr.length;j++) {
System.out.print(retNumArr[i][j] + "\t");
}
System.out.println();
}
}
}