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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 清净明诲 中级黑马   /  2014-7-13 08:43  /  1762 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何打印空心的等腰三角形,如何打印空心的菱形???
如何打印呢,?

7 个回复

倒序浏览
本帖最后由 OCTSJimmy 于 2014-7-13 10:29 编辑

设有需求要打印一个五行的等腰三角形,如下图所示,其中,“-”代表三角形左侧的空格,“_”代表三角形中的空格:
空心的等腰三角形分析流程:
----x
---x_x
--x___x
-x_____x
xxxxxxxxx

首先可以将上图看成两个三角形,对,一个由左侧空格组成的倒三角形。
那么,倒三角形会打印吧?
对了,大圈套小圈:
for(int x=0;x<4;x++)
{
     for(int y=x;y<4;y++)
     {
         System.out.print(" ");
     }
     System.out.println();
}
接着打印等腰三角形,其中要求是空心的:
那么,先做实心的,也是大圈套小圈
for(int x=0;x<5;x++)
{
     for(int y=x;y<4;y++)
     {
         System.out.print("x");
     }
     System.out.println();
}
现在先考虑等腰三角形的每一行是接续在左侧空格之后的,所以考虑两组for嵌套进行合并
for(int x=0;x<5;x++)
{
         for(int y=x+1;y<5;y++)
         {
                 System.out.print(" ");
         }
         for(int z=0;z<x*2+1;z++)
        {
                 System.out.print("x");
        }
        System.out.println();
}
最后考虑空心的问题,嗯,空心,那么也就是当满足如下条件的时候,等腰三角形的内循环要输出字符“x”,否则输出空格:
1、外循环第一行时与最后一行时
2、内循环的第一个与最后一个时
OK,改造代码:

for(int x=0;x<5;x++)
{
     for(int y=x+1;y<5;y++)
     {
           System.out.print(" ");
     }
     for(int z=0;z<x*2+1;z++)
     {
        //x==0为外循环第一行时,x==4为外循环为最后一行时
        //z==0为内循环第一个字符时,z==x*2为内循环最后一个字符时
        if(x==0||x==4||z==0||z==x*2)
        {
           //这个是全角的x,与上下的两个全角的空格是为了防止英文字体造成变形,因为有些字体的空格与字符并不等宽。
           System.out.print("X");
        }
        else
        {
           System.out.print(" ");
        }
     }
     System.out.println();
}

好的,空心等腰三角形完毕,接下来就是封装成函数,并且将其改造成可以使用传入参数控制即可。

空心的菱形完全可以用上面的套,只是它是倒置的,仅此而已。
回复 使用道具 举报
赵顺超 来自手机 中级黑马 2014-7-13 13:54:17
藤椅
用for嵌套,然后在里面的循环中加上if判断一下,应该是判断两次,满足条件星号,else空字符串
回复 使用道具 举报
赵顺超 发表于 2014-7-13 13:54
用for嵌套,然后在里面的循环中加上if判断一下,应该是判断两次,满足条件星号,else空字符串 ...

哦,我思考下,谢谢你了
回复 使用道具 举报
OCTSJimmy 发表于 2014-7-13 10:18
设有需求要打印一个五行的等腰三角形,如下图所示,其中,“-”代表三角形左侧的空格,“_”代表三角形中的 ...

条理很清楚哦,  以后自己写程序看教程得这样,  这才能学到东西!赞一个!
回复 使用道具 举报
:lol:lol:lol楼上正解
回复 使用道具 举报
OCTSJimmy 发表于 2014-7-13 10:18
设有需求要打印一个五行的等腰三角形,如下图所示,其中,“-”代表三角形左侧的空格,“_”代表三角形中的 ...

谢谢哦,非常感谢,写的非常详细,学习了,赞一个
回复 使用道具 举报
恩,是啊啊,呵呵,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马