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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 箫庐 黑马帝   /  2011-12-13 18:05  /  4145 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 箫庐 于 2011-12-15 08:46 编辑

最近在复习for循环语句,知道了毕老师的三角形的做法:尖朝上,和尖朝下; 外循环控制行数,内循环控制列数;不过打菱形就想不出来了.就得有点复杂,谁帮忙实现一下并讲解下,谢谢~~

9 个回复

倒序浏览
  1. public static void main(String args[]){
  2.         int k = 3;                        //打印的菱形的大小
  3.         for(int i=-k;i<=0;i++){                //上半个
  4.                 for(int j=1;j<=Math.abs(i);j++)
  5.             System.out.print(" ");
  6.         for(int j=1;j<=(k-Math.abs(i))*2+1;j++)
  7.                 System.out.print("*");
  8.                 System.out.println();
  9.         }                                //下半个
  10.         for(int i=0;i>=-k;i--){
  11.                 for(int j=0;j<=Math.abs(i);j++)
  12.                         System.out.print(" ");
  13.                 for(int j=1;j<(k-Math.abs(i))*2;j++)
  14.                                 System.out.print("*");
  15.                                
  16.                         System.out.println();
  17.                        
  18.                 }
  19.         }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
楼主你好,你提的这个问题很简单。只要你反复再看几遍视频就应该会了。
多写写代码试试。我也是新手。我说一下我的思路:

首先,你把这个菱形看成是俩部分。
每个部分都是由“-”和“* ”(注意空格)组成的。
然后分别写出“-”“* ”的循环。
最后把这俩个的代码组合起来就是菱形了。

___________________________________________________


第一部分:菱形的上半边。
----*
---* *
--* * *
-* * * *
* * * * *
___________________________________________________

第二部分:菱形的下半边。


-* * * *
--* * *
---* *
----*

___________________________________________________





//第一部分的代码:

        
              for (int x=0; x<5 ;x++ )
               {
                        for(int y=x+1; y<5 ; y++)
                        {
                                System.out.print(" ");
                        }
                        for(int z=0; z<=x ; z++)
                        {
                                System.out.print("* ");
                        }

                        System.out.println();
                }

___________________________________________________

//第二部分的代码:

             for (int x=0; x<4 ;x++ )
                {
                        for(int y=0; y<x+1; y++)
                        {
                                System.out.print(" ");
                        }
                        for(int z=x; z<4 ; z++)
                        {
                                System.out.print("* ");
                        }

                        System.out.println();
                }

___________________________________________________


你琢磨琢磨上边俩个代码。明白了以后把他们整合一下就是你要的菱形了~
打了半天,希望能帮到你。


  

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
王青山 发表于 2011-12-13 19:09
楼主你好,你提的这个问题很简单。只要你反复再看几遍视频就应该会了。
多写写代码试试。我也是新手。我说 ...

对了对了,真正写的时候把“-”换成“ ”(空格).
回复 使用道具 举报
本帖最后由 晨曦 于 2011-12-14 09:41 编辑

import java.lang.Math.*;
/*      
    *
   * *
  *     *
*       *
  *    *
   * *
    *
          空格形式:13531    1357531
                    7(4)                 9(5)
                     
          规律:-lay+(7/2+1)
         
*/
public  class Demo
{
                public static void main(String []args)
                {
                               
                                int lay=17;
                                int n=lay/2;
                                for(int i=0;i<lay;i++)
                                {
                                       
                                        for(int k=Math.abs(i-n);k>0;k--)
                                        {
                                                System.out.print(" ");
                                        }
                                        System.out.print("*");                       
                                        if(i!=0&&i!=lay-1)
                                        {   
                                                        if(i<=lay/2)
                                                        {
                                                                for(int j=(i-1)*2+1;j>0;j--)
                                                                {
                                                                        System.out.print(" ");
                                                                }
                                                                System.out.print("*");
                                                        }
                                            else
                                            {
                                                    int m=lay-i;
                                                    for(int k=(2*m-3);k>0;k--)
                                                    System.out.print(" ");
                                                    System.out.print("*");
                                            }
                                                       
                                        }
                                       
                                        System.out.println();
                                 
                                }
                        }
                }
正好前天写了一个,镂空的菱形,你要是想全是菱形把内部空格换成*{:soso_e112:}
回复 使用道具 举报
本帖最后由 qwert 于 2011-12-14 11:55 编辑

哈哈~新手不如前辈们厉害,斑竹老大的代码还得思考下才能领悟~
小生也稍稍修改了一下~
  1. class Diam
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 printTriangle(18);
  6.         }

  7.         public static void printTriangle(int a)
  8.         {
  9.                 if(a<39)
  10.                 {
  11.                         for (int x=0;x<a;x++ )
  12.                         {
  13.                                 for (int y=x;y<a ;y++ )
  14.                                 {
  15.                                         System.out.print(" ");
  16.                                 }
  17.                                 for(int z=1;z<=x+1;z++)
  18.                                 {
  19.                                         System.out.print("* ");
  20.                                 }
  21.                                 System.out.println();
  22.                         }
  23.                
  24.                         for(int x=0;x<a-1;x++)
  25.                         {
  26.                                 for(int y=0;y<=x+1;y++)
  27.                                 {
  28.                                         System.out.print(" ");
  29.                                 }
  30.                                 for(int z=x;z<a-1;z++)
  31.                                 {
  32.                                         System.out.print("* ");
  33.                                 }
  34.                                 System.out.println();
  35.                         }
  36.                 }
  37.                 else
  38.                         System.out.println("为保持图形正常显示,请输入一个低于40的数值");
  39.         }
  40. }
复制代码
这个控制在40行以内还算可以啦……多了就因为符号越界导致很难看了。。。
新手学习……前辈们不要见笑哈……


突发奇想……画个圣诞树也可以哈。。

                 

评分

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

查看全部评分

回复 使用道具 举报
付旭 黑马帝 2011-12-14 16:55:05
7#
都是牛b 的人啊

回复 使用道具 举报
箫庐 黑马帝 2011-12-15 08:44:34
8#
王青山 发表于 2011-12-13 19:09
楼主你好,你提的这个问题很简单。只要你反复再看几遍视频就应该会了。
多写写代码试试。我也是新手。我说 ...

谢谢啦,思路不错~~
回复 使用道具 举报
箫庐 黑马帝 2011-12-15 08:46:34
9#
谢谢各位~~学习了;
回复 使用道具 举报
都是牛人
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马