说明
输出 n*n 的二维数组,当n为3时输出为:
1 2 3
8 9 4
7 6 5
思路
将每一圈正方形作为一个循环来赋值
代码
int size = 3;//定义二维数组的大小
int value = 1;//数组中的数字
int[][] nums = new int[size][size];//用来展示的二维数组
//第一圈正方形赋值,逐渐缩小
int top = 0;
int bottom = size - 1;
int left = 0;
int right = size - 1;
while (top <= bottom) {
//正方形的上边
for (int i = left; i <= right; i++) {
nums[top][i] = value;
value++;
}
//正方形的右边
for (int i = top + 1; i <= bottom; i++) {
nums[i][right] = value;
value++;
}
//正方形的下边
for (int i = right - 1; i >= left; i--) {
nums[bottom][i] = value;
value++;
}
//正方形的左边
for (int i = bottom - 1; i > top; i--) {
nums[i][left] = value;
value++;
}
//缩小正方形边长
top++;
left++;
bottom--;
right--;
}
//边长为奇数时最后会剩下一个数
if (! (top > bottom)) {
nums[size / 2][size / 2] = value;
}
//打印
for (int[] num : nums) {
for (int i : num) {
System.out.print(i + "\t");
}
System.out.println();
}