A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

/*
* 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();
                }
        }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马