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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© NCry 中级黑马   /  2014-11-17 23:33  /  1572 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 NCry 于 2014-11-17 23:35 编辑
  1. /*1        2        3        4        5        
  2. 16        17        18        19        6        
  3. 15        24        25        20        7        
  4. 14        23        22        21        8        
  5. 13        12        11        10        9
  6. */
  7. public class LuoXuanDemo2 {
  8.         public static void main(String[] args) {
  9.                 fun(3);                                                                        
  10.         }
  11.         private static void fun(int i) {
  12.                 if(i<=0){
  13.                         System.out.println("输入数字有误,请输入大于零的数字");
  14.                         System.exit(0);
  15.                 }
  16.                 int count = 0,x=0,y=-1,size=i,l=0,temp=size;
  17.                 int[][] arr = new int[size][size];        //定义数组容器
  18.                 for(int q=0;q<(size+1)/2;q++){
  19.                         temp--;                                
  20.                         while(y<temp)        arr[x][++y]=++count;                 //获取第一行1-5                                                                        
  21.                         while(x<temp)        arr[++x][y]=++count;                //获取右边第一列                                       
  22.                         while(y>l)         arr[x][--y]=++count;                //获取最后一行                        
  23.                         l++;
  24.                         while(x>l)        arr[--x][y]=++count;                //获取左边第一列                                       
  25.                 }
  26.                 for(int a=0;a<size;a++){                                //打印二维数组
  27.                         for(int b=0;b<size;b++){
  28.                                 System.out.print(arr[a][b]+"\t");
  29.                         }
  30.                         System.out.println();
  31.                 }
  32.         }               
  33. }
复制代码
这是一个打印如上图的图形。这个是我们的作业题花了好长时间才搞出来。希望能给大家分享下。求支持,求顶啊!!!!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

13 个回复

倒序浏览
大神,1103班威武,柳柳老师威武
回复 使用道具 举报
大神  受教了!
回复 使用道具 举报
楼主的方法不错很好用 我用过之后就好像任督二脉都开了
回复 使用道具 举报

不是大神啦,亲。只写写了一点小东西,给大家分享下。
回复 使用道具 举报
ls61532529 发表于 2014-11-17 23:41
楼主的方法不错很好用 我用过之后就好像任督二脉都开了

:handshake
回复 使用道具 举报
FlyFish 中级黑马 2014-11-18 09:51:45
7#
看不太懂……能给解释一下吗?
回复 使用道具 举报
NCry 来自手机 中级黑马 2014-11-18 12:39:52
8#
FlyFish 发表于 2014-11-18 09:51
看不太懂……能给解释一下吗?

代码后面有注释的,你哪个看不懂?
回复 使用道具 举报
FlyFish 中级黑马 2014-11-18 19:48:32
9#
NCry 发表于 2014-11-18 12:39
代码后面有注释的,你哪个看不懂?

for(int q=0;q<(size+1)/2;q++){
                        temp--;                                
                        while(y<temp)        arr[x][++y]=++count;                 //获取第一行1-5                                                                        
                        while(x<temp)        arr[++x][y]=++count;                //获取右边第一列                                       
                        while(y>l)         arr[x][--y]=++count;                //获取最后一行                        
                        l++;
                        while(x>l)        arr[--x][y]=++count;                //获取左边第一列                                       
                }
这个for看不懂,想不上去
回复 使用道具 举报
NCry 中级黑马 2014-11-18 22:48:28
10#

这个for循环的目的是为了让他让他在temp和l数值在不满足条件的时候能够退出来。需要循环的次数就是size+1)/2。所以用for循环。
回复 使用道具 举报
zbt 中级黑马 2014-11-18 23:20:40
11#
大神啊,我编的不通用。
回复 使用道具 举报
搬回去好好研究研究……
回复 使用道具 举报
好高深的样子、、、、收下去研究了
回复 使用道具 举报
一开始看着没思路,感觉纠结死了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马