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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1316582449 中级黑马   /  2016-6-27 21:09  /  680 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.Scanner;

  2. public class LuoXuanPrint {

  3.         /**需求 写一个方法,打印等长的二维数组,要求:
  4.          * 从1开始的自然数由方阵的最外圈向内螺旋方式顺序排列,
  5.          * 如:n=4则打印
  6.          * 1        2        3        4
  7.          * 12        13        14        5
  8.          * 11        16        15        6
  9.          * 10        9        8        7
  10.          * 思路:
  11.          * 1创立一个n接二维数组
  12.          * 2螺旋排列(怎么实现呢?);其实吧它是有个规律的按照横打印,竖打印,反向横打印,反向竖打印,
  13.          * 那我依照及计算机的顺序流程打印不就是可以实现了吗!?
  14.          * 所以我就按照她的规律就一下子打印了一个口字型!然后我在循环i/2次!但是有个问题,
  15.          * 如果是单数的数组它:如(n=9)/2后会把最后一个给省略掉,所以我就在循环体的循环次数是a<=i/2!
  16.          */
  17.         public static void main(String[] args) {
  18.                 // TODO Auto-generated method stub
  19.                 Scanner sc = new Scanner(System.in);
  20.                 System.out.println("输入要打印的数:");
  21.                 int i = sc.nextInt();
  22.                 int[][] arr = new int[i][i];//定义一个i*i数组
  23.                 int n = i - 1;        //数组的最大索引,假设是4*4数组,那最大索引是3;
  24.                 int q = 0;        //圈数控制,q=0是最外圈,q=1是向里进一圈!
  25.                 int w = 0;        //要对数组进行连续赋值,必须定义一个连续累加值
  26.                 int a = 0;        //循环变量,用来控制循环多少次
  27.                 while (a <= i / 2) {       
  28.                         // 打印横行,
  29.                         for (int j1 = q; j1 <= n - q; j1++) {
  30.                                 arr[q][j1] = ++w;
  31.                         }
  32.                         // 打印竖行                 
  33.                         for (int j1 = 1 + q; j1 <= n - q; j1++) {
  34.                                 arr[j1][n - q] = ++w;
  35.                         }
  36.                         // 反向横行               
  37.                         for (int j1 = n - q - 1; j1 >= q; j1--) {
  38.                                 arr[n - q][j1] = ++w;
  39.                         }
  40.                         // 反向竖行               
  41.                         for (int j1 = n - q - 1; j1 > q; j1--) {
  42.                                 arr[j1][q] = ++w;
  43.                         }
  44.                         q++;
  45.                         ++a;
  46.                 }
  47.                 System.out.println();
  48.                 for (int j = 0; j < arr.length; j++) {
  49.                         for (int j2 = 0; j2 < arr[j].length; j2++) {
  50.                                 System.out.print(arr[j][j2] + "\t");

  51.                         }
  52.                         System.out.println();
  53.                 }
  54.         }

  55. }
复制代码


评分

参与人数 1黑马币 +12 收起 理由
chengongzong + 12 神马都是浮云

查看全部评分

4 个回复

倒序浏览
我只能顶贴啊~~~~~~~~~~~~~~~~
回复 使用道具 举报
顶顶顶顶
回复 使用道具 举报
我也只能顶贴啊~~~~~~~~~~~~~~~
回复 使用道具 举报
赞一个····························
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马