之前已经成功写过一次代码,今天重新看这个题目时,一下子又没了思路,在草稿纸上比划了大概十分钟才想到实现的思路。思路跟上次实现的完全一样,发现时间长了就忘记了!真是好记性不如烂笔头,何况我这么差的记性呢!现把解决该问题时,自己的思路写下来分享一下。(注意重点看我怎么思考的,不要一下子就看代码)

图 1

要输出如图1所示的菱形,第一反应是看看这个菱形有什么特点。在草稿纸上比划了半天,将图1转化成了图2用数字表示的图

图 2

比较图1和图2发现有以下特点:

(1)图2中的每一个数字代表图1中每个*号在所在行的列号。

(2)6+6、5+7、4+8、3+9、2+10、1+11均等于12。

由于菱形是对称的,所以先考虑上半部分,即如图3所示

图 3

仔细观察图3,可以发现:

(1)图3为6行11列。

(2)左半部分第1行为6、第2行为5、..............、第6行为1;由此可知外循环应使用for(int i=6;i>=1;i--)

(3)用i代表行号,j代表列号;当i=j或者j=12-i时该位置的应输出*号,其他位置输出空格。

有了以上分析,就可以写出输出图3所示图形的核心代码,如下:

  1. for(int i=6;i>=1;i--){   //菱形的上半部分
  2. for(int j=1;j<=11;j++){
  3. if(i==j||j==12-i){
  4. System.out.print("*");
  5. }else{
  6. System.out.print(" ");
  7. }
  8. }
  9. System.out.println();
  10. }

要想输出菱形的下半部分,只需将外循环改为for(int i=2;i<=6;i++)即可。

看到这儿,相信你不用看下面的完整代码,自己就可以完全写出实现的代码了!如果你还没有写,动手实践一下吧!

附录:完整代码:

  1. public class Diamond {
  2. public static void main(String[] args) {
  3. // TODO Auto-generated method stub
  4. for(int i=6;i>=1;i--){   //菱形的上半部分
  5. for(int j=1;j<=11;j++){
  6. if(i==j||j==12-i){
  7. System.out.print("*");
  8. }else{
  9. System.out.print(" ");
  10. }
  11. }
  12. System.out.println();
  13. }
  14. for(int i=2;i<=6;i++){    //菱形的下半部分
  15. for(int j=1;j<=11;j++){
  16. if(i==j||j==12-i){
  17. System.out.print("*");
  18. }else{
  19. System.out.print(" ");
  20. }
  21. }
  22. System.out.println();
  23. }
  24. }
  25. }

使用for循环输出空心的菱形的思路-还是没有办法理解的更多相关文章

  1. Java利用for循环输出空心的菱形

    编写程序,在控制台上输出空心菱形,对角距离为6. public class Diamond { public static void main(String[] args) { printHollow ...

  2. 09-使用for循环输出空心菱形(循环)

    /** * 使用for循环输出空心菱形 * */ public class Test7 { public static void main(String[] args) { for (int i = ...

  3. for循环输出空心菱形的形状【java】

    使用for循环语句输出以下“空心菱形”效果: * * * * * * * * * * * * * * * * 建议优先参考笔者的另一篇文章:<for循环输出菱形的形状[java]> 代码: ...

  4. for循环打印空心菱形的新方法

    相信大家在学习流程控制的循环结构时,一定都用for循环绘制过菱形和空心菱形吧,我记得我当时写的很麻烦,把一个菱形分为上下两部分,上面2重for循环,下面2重for循环,相信有很多的小伙伴都是这样做的吧 ...

  5. JavaScript学习笔记-循环输出菱形,并可菱形自定义大小

    var Cen = 6;//定义菱形中部为第几行(起始值为0) //for循环输出菱形 document.write("<button onclick='xh()'>点我for循 ...

  6. 面试题-一个for循环输出一个棱形

    用一个for循环输出以下棱形 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ...

  7. 关于hasNextInt判断后无限循环输出else项的解决办法

    话不多说,上来就是干! import java.util.Scanner; public class Test_hasNextInt { /** * @param args */ public sta ...

  8. Thinkphp_View(1)循环输出

    循环输出主要是使用volist和foreach标签输出. VOLIST volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使 ...

  9. [C#]循环输出 000 - 999999

    循环输出 000 - 999999 ; i < ; i++) { , i.ToString().Length); j < 7; j++) { Debug.WriteLine(i.ToStr ...

随机推荐

  1. block 的演练和使用

    概念 block 是 C 语言的 是一种数据类型,可以当作参数传递 是一组预先准备好的代码,在需要的时候执行 动画 block 回顾 self.demoView.center = CGPointMak ...

  2. SVN-svn path not found: 404 Not Found

    报错信息是本地找不到文件 因为我直接移动了项目中的java文件到别的目录,在SVN看来相当于变相的删掉了一个目录的文件,在另外一个目录新增文件, 但是移动文件SVN是不会做删除记录到日志文件中的,所以 ...

  3. 网址组成与特殊ip小解

    网址 https://www.baidu.com:8010/a/html/a.html?tn=monline_3_dg#part1 注解: 网址= 当前url协议+域名+端口号+路径名+参数+hash ...

  4. pipe的实现

    本文进行了详细的描述,http://blog.csdn.net/zhouhong1026/article/details/8151235

  5. openURL in APP Extension

    var responder = self as UIResponder? while (responder != nil){ if responder!.respondsToSelector(Sele ...

  6. java基本输入类型数据System.out.println()或System.out.print()

  7. CodeForces 546 D. Soldier and Number Game(素数有关)

    Description Two soldiers are playing a game. At the beginning first of them chooses a positive integ ...

  8. fzu Problem - 2232 炉石传说(二分匹配)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2232 Description GG学长虽然并不打炉石传说,但是由于题面需要他便学会了打炉石传说.但是传统的炉石 ...

  9. php使用curl提交xml数据

    $xml_data ='<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_ ...

  10. 고 해서: 表示在做B的各种理由中, A是代表性的理由

    1. 날씨도 좋고해서 산책이나 하려고 해요. 2. 할 일도 없고해서 일찍 돌어왔어요. 3. 기분도 우울하고 해서 친구란 술 마시기로 했어요. 可以加过去式和将来时使用 1. 수업도 끝 ...