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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ly123456

中级黑马

  • 黑马币:-39

  • 帖子:46

  • 精华:0

© ly123456 中级黑马   /  2016-3-19 20:29  /  445 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Text2 {
        public static void main(String[] args) {
                //打印一个等边三角形
                /*for (int x = 1; x <= 5 ;x ++ ) {
                        for (int y = 1;y <= x ;y ++ ) {
                                System.out.print("*");
                        }
                        System.out.println();
                }*/
                /*打印一个等边三角形,如下图所示:
                                            *
                                           ***
                                          *****
                                         *******     */
                int n = 1;                                            //定义变量n
                for (int x = 1;x <= 4 ;x ++ ) {                                                  //外循环。控制等边三角形的行数     
                        for (int y = 1;y <= 4 - x  ;y ++ ) {                          //内循环一:通过打印空格来控制*打印的位置
                                System.out.print(" ");                                                  //空格第一行多,没行递减一个.
                        }
                       
                        for (int z = 1;z <= n ;z ++ ) {                                        //内循环二:控制每一行打印*的个数
                                System.out.print("*");                                                //第一行一个,每行递增两个
                               
                        }
                        System.out.println();                           //内循环全部执行完毕后,换行.
                        n += 2;                                                                                        //因为打印的*每行递增2个.所以循环变量+2.
                }
                System.out.println("----------------------------------------------------------");
                /*需求,打印一个倒的等边三角形.如图所示
                                         *******
                                          *****
                                           ***
                                            *
                思路:此图形跟上图形对称相反,做法应该一样,
                所不同的就是初始化值和条件表达式.*/
                  int m = 1;
                  for (int x = 1;x <= 4 ;x ++ ) {                                        //用外循环来确定图形行数
                          for (int y = 1;y < x ;y++ ) {                                        //用内循环一来通过打印空格来控制*开始打印的位置
                                  System.out.print(" ");                                        //第一行没有空格,每行递增一个
                          }
                          for (int z = 1;z <= 7 - m + 1 ; z ++) {                //用内循环二来控制打印*的个数
                                  System.out.print("*");                                        //第一行为7个,每行递减两个
                          }
                          System.out.println();
                          m += 2;

                  }               
                  System.out.println("--------------------------------------------");
                /*需求,打印一个菱形.如下图所示
                                             *
                                           ***
                                          *****
                                         *******
                                          *****
                                           ***
                                            *
                思路:次图形可以看做是两个对称的两个等腰三角形,
                首先把图形拆分,发现图形的对称轴线是在第四行.
                是否可以通过if语句来实现*/
                        int i = 1;
                        int j = 5;
                        for (int x = 1;x <= 7 ;x ++ ) {                                        //外循环.控制图形行数
                                if (x <= 4) {                                                                //if语句,控制前四行图形打印
                                        for (int y = 1;y <= 4 - x ;y ++ ) {                //打印空格.因为第一行空格最多,接下来每行递减,所以用4-x来控制
                                                System.out.print(" ");
                                        }
                                        for (int z = 1;z <= i ;z ++ ) {                        //*第一行最少,一次每行递增2.所以定义一个变量,每次循环完+2
                                                System.out.print("*");
                                               
                                        }
                                        i += 2;
                                } else {                                                                        //if的else语句来控制图形第四行,即跟上面对称相反的图形
                                        for (int y = 5;y <= x ;y ++ ) {                //因为此时的X值为5,所以内循环初始化值为5,然后条件表达小于X即可
                                                System.out.print(" ");                                //接下来随着X的递增就能达到空格每行递增的目的了
                                               
                                        }
                                        for (int z = 1;z <= j;z ++ ) {                        //因为*需要打印的个数为5个,所以定义变量为5,然后每次循环递减2.
                                                System.out.print("*");
                                        }
                                       
                                         j -= 2;
                                }
                                System.out.println();
                               
                        }
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马