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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.Scanner;

public class LuoXuanPrint {

        /**需求 写一个方法,打印等长的二维数组,要求:
         * 从1开始的自然数由方阵的最外圈向内螺旋方式顺序排列,
         * 如:n=4则打印
         * 1        2        3        4
         * 12        13        14        5
         * 11        16        15        6
         * 10        9        8        7
         * 思路:
         * 1创立一个n接二维数组
         * 2螺旋排列(怎么实现呢?);其实吧它是有个规律的按照横打印,竖打印,反向横打印,反向竖打印,
         * 那我依照及计算机的顺序流程打印不就是可以实现了吗!?
         * 所以我就按照她的规律就一下子打印了一个口字型!然后我在循环i/2次!但是有个问题,
         * 如果是单数的数组它:如(n=9)/2后会把最后一个给省略掉,所以我就在循环体的循环次数是a<=i/2!
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Scanner sc = new Scanner(System.in);
                System.out.println("输入要打印的数:");
                int i = sc.nextInt();
                int[][] arr = new int[i][i];//定义一个i*i数组
                int n = i - 1;
                int q = 0;
                int w = 0;
                int a = 0;
                //核心思想就是口字走路线!
                while (a <= i / 2) {
                        // 打印横行
                        for (int j1 = q; j1 <= n - q; j1++) {
                                arr[q][j1] = ++w;
                        }
                        // 打印竖行
                        for (int j1 = 1 + q; j1 <= n - q; j1++) {
                                arr[j1][n - q] = ++w;
                        }
                        // 反向横行
                        for (int j1 = n - q - 1; j1 >= q; j1--) {
                                arr[n - q][j1] = ++w;
                        }
                        // 反向竖行
                        for (int j1 = n - q - 1; j1 > q; j1--) {
                                arr[j1][q] = ++w;
                        }
                        q++;
                        ++a;
                }
                System.out.println();
                for (int j = 0; j < arr.length; j++) {
                        for (int j2 = 0; j2 < arr[j].length; j2++) {
                                System.out.print(arr[j][j2] + "\t");

                        }
                        System.out.println();
                }

        }



0 个回复

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