黑马程序员技术交流社区

标题: for嵌套循环打印菱形 和 空心菱形 [打印本页]

作者: suihs11    时间: 2015-1-21 22:09
标题: for嵌套循环打印菱形 和 空心菱形
本帖最后由 suihs11 于 2015-3-24 23:20 编辑

打印图形:
看图形,用for嵌套循环打印出两个图形
因为代码加注释有些长,存到附件中了,没设置回复查看,觉得还可以的帮忙给回复一下~~
思路和注释都有,比较详细,看过视频的都能看懂。
建议自己尝试做做,不行的话看看代码中的解题思路,最后看代码。
感觉for嵌套循环的题很有意思,谁还有类似的题,可以拿出来分享交流一下吗?




菱形.png (1.28 KB, 下载次数: 205)

第一题

第一题

空心.png (1.15 KB, 下载次数: 216)

第二题

第二题

菱形&空心菱形.rar

1.67 KB, 下载次数: 619

里面是.java文件


作者: 秦文强    时间: 2015-1-21 22:10
厉害啊,我也得试一下
作者: pipi1012    时间: 2015-1-21 22:16
空心的实现的循环我正在学习,谢过了
作者: lilifan1598    时间: 2015-1-21 22:18
支持,给个赞
作者: suihs11    时间: 2015-1-21 22:21
会熟练实用for循环的,仔细思考,做出来不太难
作者: sq_jun    时间: 2015-1-21 22:30
谢谢分享
作者: suihs11    时间: 2015-1-21 22:30
实心的菱形原题只有上面的三角形,下面的是我自己补上的。
作者: da_chuan    时间: 2015-1-21 23:47
是不是还可以使用二维数组做啊
作者: jun_03    时间: 2015-1-21 23:56
哈哈   这个自己打出来了!
作者: suihs11    时间: 2015-1-22 00:16
有别的想法的自己尝试一下,如果成功了,别忘了来分享一下~~
作者: 丶人世百态    时间: 2015-1-22 00:39
这个可以搞一下啊 一会试试去
作者: w13832027    时间: 2015-1-22 02:09
。。。我刚刚研究了一个。方阵。用的就是for循环嵌套。
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
这是打印出来的效果。
作者: suihs11    时间: 2015-1-22 08:05
w13832027 发表于 2015-1-22 02:09
。。。我刚刚研究了一个。方阵。用的就是for循环嵌套。
1 2 3 4
12 13 14 5

代码分享一下吧,还是螺旋结构的,很难啊
作者: 菜鸟一号    时间: 2015-1-22 09:14
这个有创意
作者: w13832027    时间: 2015-1-22 13:24
suihs11 发表于 2015-1-22 08:05
代码分享一下吧,还是螺旋结构的,很难啊
  1. <p>晕。大晚上的看见你这题就睡不着了研究了俩小时。。。。</p><p>思路:1、每一行为一个一维数组,元素的顺序按方阵需求排列。使用for循环来为数组赋值。
  2.   2、声明一个变量,用作为数组中每个元素赋值。因为方阵中的数字是从1开始递增的。
  3.    只不过排列的顺序不一样。
  4.    3、假如一个二维数组中有4个一维数组,一维数组中各有4个元素,这代表着方阵的行和列。
  5.   (1) 因为程序是逐行打印的,经观察方阵,发现其右边列为递增,既下标为1,2,3的这三个数组的最大下标的值。我们可以利用for循环进行赋值,</p><p> (2)同理可以将方阵首行的数据直接以一个for循环完成赋值。代码如下;</p><p>关键:1、关键就在用于赋值的这个变量。整个程序都应围绕这个变量的递增来编写循环。好处就在于无需凭空想象,只需按部就班的为相应位置的元素赋值即可。</p><p>
  6. </p><p>package javase基础毕向东;
  7. import java.util.Scanner;
  8. public class Gn {
  9.              public static void main(String[] args)
  10.              {  
  11.                      System.out.println("你想要几行?");
  12.                      Scanner in=new Scanner(System.in);
  13.                      int zqq=in.nextInt();       //用于接收用户输入的行数。</p><p>int[][] arr=new int[zqq][zqq];       //建立一个二维数组。
  14.        int fz=0;            //这个变量最关键,是用来给数组赋值的,整个赋值的过程都应该跟着这个变量走。
  15.        int x=0;
  16.                      int n=(zqq+1)/2;        
  17. for(int y=0;y<n;y++){                    //控制外循环的次数。如用户输入4,既循环2次。</p><p>for(x=y;x<=zqq-y-1;x++){
  18.                                      arr[y][x]=++fz;                              //此为对方阵首行进行赋值,一次搞定首行。如1234
  19.         }
  20.                              for(x=y+1;x<=zqq-y-1;x++){
  21.                                      arr[x][zqq-y-1]=++fz;                   //要跟着fz的变化对数组赋值,比如此时fz的值为5.观察方阵编写循环即可。
  22.         }
  23.                              for(x=zqq-y-2;x>=y;x--){
  24.                                      arr[zqq-y-1][x]=++fz;               //同上,这里赋值的是思路3中(1)。
  25.         }
  26.                              for(x=zqq-y-2;x>=y+1;x--){
  27.                                      arr[x][y]=++fz;                       //同上。注意循环判定条件的变化。
  28.                              }
  29.                      }
  30.                       for(int i=0;i<zqq;i++)          //输出二维数组
  31.                   {
  32.                       for(int j=0;j<zqq;j++){
  33.                          System.out.print(arr[i][j]+" ");
  34.                       }
  35.                       System.out.println();
  36.                   }
  37.            }
  38.         }


  39. </p>
复制代码

昨天看见论坛有人发了这个螺旋方阵的贴,然后就一顿算,一顿推。我觉得我已经成了福尔摩斯二代了。终于抓住了犯人,就是那个递增的变量。

作者: suihs11    时间: 2015-1-22 20:47
我觉的for嵌套不用研究的太深入,后面的知识点难的有很多,最好多把精力放在后面重点的地方
作者: 纳海百川    时间: 2015-1-23 22:09
第二个要比第一个要难好多
作者: 流行VS泪痕    时间: 2015-1-23 22:18
厉害,很有意思,我也调试一下试试
作者: I'can'do'it    时间: 2015-1-23 22:24
外循环控制行,内循环控制列
作者: 朱智彪    时间: 2015-1-24 21:31
谢谢分享
作者: 传慈    时间: 2015-1-24 21:43
这些题挺不错的 ,研究下
作者: 极光_CDY    时间: 2015-3-18 23:39
suihs11 发表于 2015-1-22 00:16
有别的想法的自己尝试一下,如果成功了,别忘了来分享一下~~

http://bbs.itheima.com/thread-177953-1-1.html
我也学习了下,但有没有方法把重复部分封装呢?

作者: suihs11    时间: 2015-3-24 23:19
老师今天留的作业,貌似和这帖子很相似
作者: 和谐木马    时间: 2015-3-25 00:04
这个看着就头晕啊,有时间可以研究研究啊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2