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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© suihs11 高级黑马   /  2015-1-21 22:09  /  6268 人查看  /  23 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 suihs11 于 2015-3-24 23:20 编辑

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




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

第一题

第一题

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

第二题

第二题

菱形&空心菱形.rar

1.67 KB, 下载次数: 569

里面是.java文件

23 个回复

倒序浏览
厉害啊,我也得试一下
回复 使用道具 举报
空心的实现的循环我正在学习,谢过了
回复 使用道具 举报
支持,给个赞
回复 使用道具 举报
会熟练实用for循环的,仔细思考,做出来不太难
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
实心的菱形原题只有上面的三角形,下面的是我自己补上的。
回复 使用道具 举报
是不是还可以使用二维数组做啊
回复 使用道具 举报
jun_03 中级黑马 2015-1-21 23:56:34
9#
哈哈   这个自己打出来了!
回复 使用道具 举报
有别的想法的自己尝试一下,如果成功了,别忘了来分享一下~~
回复 使用道具 举报
这个可以搞一下啊 一会试试去
回复 使用道具 举报
。。。我刚刚研究了一个。方阵。用的就是for循环嵌套。
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
这是打印出来的效果。
回复 使用道具 举报
w13832027 发表于 2015-1-22 02:09
。。。我刚刚研究了一个。方阵。用的就是for循环嵌套。
1 2 3 4
12 13 14 5

代码分享一下吧,还是螺旋结构的,很难啊
回复 使用道具 举报
这个有创意
回复 使用道具 举报
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>
复制代码

昨天看见论坛有人发了这个螺旋方阵的贴,然后就一顿算,一顿推。我觉得我已经成了福尔摩斯二代了。终于抓住了犯人,就是那个递增的变量。
回复 使用道具 举报 1 0
我觉的for嵌套不用研究的太深入,后面的知识点难的有很多,最好多把精力放在后面重点的地方
回复 使用道具 举报
第二个要比第一个要难好多
回复 使用道具 举报
厉害,很有意思,我也调试一下试试
回复 使用道具 举报
外循环控制行,内循环控制列
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马