/*
* 9、 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
* 示例
* 1 2 3 4
* 12 13 14 5
* 11 16 15 6
* 10 9 8 7
*思路:1.给二维数组复制肯定使用循环
* 2.找规律,然后循环
* 3.每一圈为一次大循环,然后四个边各遵循一个规律,总结归路
* 4.打印
*/
public class Test9 {
public static void main(String[] args) {
int n = 6;
int count = 1;
int[][] arr = new int[n][n];
// 循环圈数,以大圈为准,大圈规律,开始数组角标x=y=z;z表示第z-1圈
for (int z = 0; z < (n + 1) / 2; z++) {
// 上横排规律,x不变,y自增
for (int x = z, y = z; y < n - z - 1; y++) {
arr[x][y] = count++;
}
// 右竖排,y不变,x自增
for (int x = z, y = n - z - 1; x < n - z - 1; x++) {
arr[x][y] = count++;
}
// 下横排,x不变,y自减
for (int x = n - z - 1, y = x; y >= z; y--) {
arr[x][y] = count++;
}
// 右竖排,y不变,x自减
for (int x = n - z - 2, y = z; x > z; x--) {
arr[x][y] = count++;
}
}
// 打印
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(" " + arr[j]);
}
System.out.println();
System.out.println();
}
}
}
|
|