黑马程序员技术交流社区

标题: 打印三角形的问题 [打印本页]

作者: 谢宝盛    时间: 2012-11-28 18:31
标题: 打印三角形的问题
                  *
    * *
   *   *
  *     *
 *       *
*********** 像这样的应该怎么做呢,光输出空格 *是能做   有没有更简单的呢,


作者: 林剑    时间: 2012-11-28 18:57
class Test8
{
        public static void main(String[] args)
        {               
/*
-----*
----*-*
---*---*
--*-----*
-*-------*
***********
*/
                for (int i=1;i<6 ;i++ )
                {
                        for (int j =i;j<6 ;j++ )
                        {
                                System.out.print("-");
                        }
                        /*打印
                        -----
                        ----
                        ---
                        --
                        -
                        */
                        System.out.print("*");//打印*

                        for (int s=0;s<2*i-3 ;s++ )
                        {
                                System.out.print("-");
                        }//打印两个星中间的—
                        if(2*i-3>0)
                                System.out.print("*");
                        System.out.println();
                }
                for (int t=0;t< 11;t++ )
                {
                        System.out.print("*");//由于第一行只有一个*,所以要加条件判断下
                }//最后一行比较特殊,单独打印
        }
}
把-换成空格就是你要的输出图形了

思路就是将整个图形左边空白和中间空白用循环嵌套实现,最后一行单独输出,要是一定要加入循环也是可以的,加个条件判断下就行了

作者: 崔维友    时间: 2012-11-28 19:08
本帖最后由 崔维友 于 2012-11-28 19:12 编辑

我也凑凑热闹吧,楼上已经讲的很直白了:
可以分区打印,左边第一个星号之前的为一部分,从第一个星号开始再一部分。
  1. class Oh
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //控制行数
  6.                 for (int i=1; i<=10; i++)
  7.                 {
  8.                         //控制第一部分的空格数
  9.                         for (int j=1; j<=11-i; j++)
  10.                         {
  11.                                 System.out.print(" ");
  12.                         }
  13.                         //控制三角形部分
  14.                         for (int k=1; k<=2*i-1; k++)
  15.                         {
  16.                                 //边
  17.                                 if (k==1 || k==2*i-1)
  18.                                 {
  19.                                         System.out.print("*");
  20.                                 }
  21.                                 else
  22.                                 {
  23.                                         System.out.print(" ");
  24.                                 }
  25.                         }
  26.                         System.out.println();
  27.                 }
  28.                 //最底一行
  29.                 for (int i=0; i<21; i++)
  30.                 {
  31.                         System.out.print("*");
  32.                 }
  33.         }
  34. }
复制代码

不才博客中有几个例子可参考:http://blog.csdn.net/vigiles/article/details/8182801
------------------------------------------------------------------------------------------------------
新手入门,请多指正!



作者: 何伟    时间: 2012-11-29 13:00
-----
----
---
--
-
把它改成空格在打印就可以了

你把空格先删类变成下面这样就好思考了

**
**
**
**
***********

作者: 何伟    时间: 2012-11-29 14:21
何伟 发表于 2012-11-29 13:00
-----
----
---

搞错了
理解成这个图形了
     *
    * *
   * * *





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