黑马程序员技术交流社区

标题: 如何写让程序打印出 等腰三角形? [打印本页]

作者: 福娃51zx    时间: 2015-3-25 18:00
标题: 如何写让程序打印出 等腰三角形?
本帖最后由 福娃51zx 于 2015-3-26 08:39 编辑

如何写让程序打印出      
                     *
                    * *
                   * * *
                  * * * *
作者: 轻羽涉池    时间: 2015-3-25 18:19
for循环套两个for.第一个打印正三角的空格,另一个打印星加空格
作者: 福娃51zx    时间: 2015-3-25 18:23
轻羽涉池 发表于 2015-3-25 18:19
for循环套两个for.第一个打印正三角的空格,另一个打印星加空格

大神能写代码出来吗?不明白
作者: 黑色救护车    时间: 2015-3-25 19:51
本帖最后由 黑色救护车 于 2015-3-25 19:55 编辑
  1. public class Triangle6 {
  2.         
  3.         public static void main(String[] args) {
  4.                
  5.                 int base = 15;
  6.                
  7.                 //打印上述图形,初始行*的个数与整个图形行数的关系是 (最后一行*个数 / 2 + 1),例如最后一行*个数(base) = 7的时候,有4行,以此类推
  8.                 for(int x = 0; x < (base / 2 + 1); x ++) {
  9.                         
  10.                         //每行空格的个数 = 最后一行*个数 / 2
  11.                         for(int j = (base / 2); j > x; j --) {
  12.                                 System.out.print(" ");
  13.                         }
  14.                         
  15.                         //第(x + 1)行*的个数 = 最后一行*的个数(base) - 2 * (整个三角形的行数 - (x + 1)
  16.                         for(int y = 0; y < (base - 2 * ((base / 2 + 1) - (x + 1))); y ++) {
  17.                                 System.out.print("*");
  18.                         }
  19.                         
  20.                         System.out.println();
  21.                 }
  22.         }
  23. }
复制代码

希望对你有帮助~:)
作者: 黑色救护车    时间: 2015-3-25 20:03
上面貌似不是你要的图形~~ 这个就是了~
  1. package test;

  2. public class Triangle7 {

  3.         public static void main(String[] args) {
  4.                 for(int x = 0; x < 5; x ++) {
  5.                         //此循环打印空格,已开始便于理解的时候,可以将输出内容改成“-”
  6.                         for(int y = x; y < 5; y ++) {
  7.                                 System.out.print(" ");
  8.                         }
  9.                         //此循环打印“* ”,最后图形即等腰三角形
  10.                         for(int j = 0; j < x + 1; j ++) {
  11.                                 System.out.print("* ");
  12.                         }
  13.                         System.out.println();
  14.                 }
  15.         }
  16. }
复制代码

作者: 福娃51zx    时间: 2015-3-25 20:04
黑色救护车 发表于 2015-3-25 19:51
希望对你有帮助~

好,太牛了,谢谢!
作者: 福娃51zx    时间: 2015-3-25 20:08
福娃51zx 发表于 2015-3-25 20:04
好,太牛了,谢谢!

不过int base = 8;时打印的不是等腰三角形
作者: 黑色救护车    时间: 2015-3-25 20:39
福娃51zx 发表于 2015-3-25 20:08
不过int base = 8;时打印的不是等腰三角形

是,多谢指正,我修改去了~
作者: 黑色救护车    时间: 2015-3-25 20:46
福娃51zx 发表于 2015-3-25 20:08
不过int base = 8;时打印的不是等腰三角形

哈哈哈,只能这么投机了。。。可能是(base - 2 * ((base / 2 + 1) - (x + 1))); y ++)这行里面有蹊跷~目前只能想到做个判断完了~哪天有空了继续想想这个东西~肯定还有其他方法的~这么来就OK了~代码来也~
  1. package test;

  2. /**
  3. * 打印如下图形:
  4. *
  5. *                     *
  6. *         ***
  7. *        *****
  8. *       *******
  9. *          .
  10. *          .
  11. *          .
  12. *         
  13. *         
  14. * @author jeremy
  15. *
  16. *        思路同Triangle5,只是打印空格的循环先于换行语句执行,以及需要根据整个三角的行数确定每行打印空格的个数。
  17. */

  18. public class Triangle6 {
  19.        
  20.         public static void main(String[] args) {
  21.                
  22.                 int base = 8;
  23.                
  24.                 //打印上述图形,初始行*的个数与整个图形行数的关系是 (最后一行*个数 / 2 + 1),例如最后一行*个数(base) = 7的时候,有4行,以此类推
  25.                 for(int x = 0; x < (base / 2 + 1); x ++) {
  26.                        
  27.                         //每行空格的个数 = 最后一行*个数 / 2
  28.                         for(int j = (base / 2); j > x; j --) {
  29.                                 System.out.print(" ");
  30.                         }
  31.                        
  32.                         //第(x + 1)行*的个数 = 最后一行*的个数(base) - 2 * (整个三角形的行数 - (x + 1))
  33.                         if(base % 2 == 0) {
  34.                                 for(int y = 0; y <= (base - 2 * ((base / 2 + 1) - (x + 1))); y ++) {
  35.                                         System.out.print("*");
  36.                                 }
  37.                         } else {
  38.                                 for(int y = 0; y < (base - 2 * ((base / 2 + 1) - (x + 1))); y ++) {
  39.                                         System.out.print("*");
  40.                                 }
  41.                         }
  42.                         System.out.println();
  43.                 }
  44.         }
  45. }
复制代码

就多了个判断,恶心吧,哈哈哈哈~;P
作者: 福娃51zx    时间: 2015-3-25 20:48
看到就想晕了
作者: hhh233    时间: 2015-3-25 22:20
本帖最后由 hhh233 于 2015-3-25 22:21 编辑
  1. public class Demo {
  2. public static void main(String[] args) {
  3.     int H = 5;
  4.     for(int i=0; i<(H+1) / 2; i++) {
  5.      for(int j=0; j<H/2-i; j++) {
  6.       System.out.print(" ");
  7.      }
  8.      for(int k=1; k<(i+1)*2; k++) {
  9.       System.out.print('*');
  10.      }
  11.      System.out.println();
  12.     }
复制代码




作者: 胡谭龙    时间: 2015-3-26 07:54
看了视频就知道了
作者: 福娃51zx    时间: 2015-3-26 08:39
hhh233 发表于 2015-3-25 22:20

多谢指点!
作者: qsmaxmin    时间: 2015-3-26 09:59
额,看视频啊。。




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