for循环输出菱形的形状【java】

使用for循环语句输出以下“菱形”效果:

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

代码  

 1 /*
 2     *
 3    ***
 4   *****
 5  *******
 6 *********
 7  ******* 
 8   *****
 9    ***
10     *
11 
12 分析:
13     - 上层(共5层)
14         每层构成:每层每层空格数+每层星星数
15             第1层 -- 空格数:4 + 星星数:1
16             第2层 -- 空格数:3 + 星星数:3
17             第3层 -- 空格数:2 + 星星数:5
18             第4层 -- 空格数:1 + 星星数:7
19             第5层 -- 空格数:0 + 星星数:9
20             
21             分析:
22             第1层 -- 空格数:4(= 5-1) + 星星数:1(= 2*1-1)
23             第2层 -- 空格数:3(= 5-2) + 星星数:3(= 2*2-1)
24             第3层 -- 空格数:2(= 5-3) + 星星数:5(= 2*3-1)
25             第4层 -- 空格数:1(= 5-4) + 星星数:7(= 2*4-1)
26             第5层 -- 空格数:0(= 5-5) + 星星数:9(= 2*5-1)
27 
28             推理:(上层共 layer 层)
29             第i层 -- (空格数 = layer-i) + (星星数 = 2*i-1)
30 
31 
32     - 下层(下层共 layer-1 层)
33             第1层 -- 空格数:1 + 星星数:7
34             第2层 -- 空格数:2 + 星星数:5
35             第3层 -- 空格数:3 + 星星数:3
36             第4层 -- 空格数:4 + 星星数:1
37             
38             分析:效果等效(共4层)
39             下层的第1层对应上层的第4层 -- 空格数:1 + 星星数:7
40             下层的第2层对应上层的第3层 -- 空格数:2 + 星星数:5
41             下层的第3层对应上层的第2层 -- 空格数:3 + 星星数:3
42             下层的第4层对应上层的第1层 -- 空格数:4 + 星星数:1
43 
44 
45             推理:
46             第i层 -- (空格数 = i) + (星星数 = 2*(layer-i)-1)
47 */
48 
49 
50 public class StarTree
51 {
52     public static void main(String[] args){
53         int layer = 5;
54 
55         // 一、上层(显示 layer 行)
56         for(int i=1;i<=layer;i++){
57              
58             // 1、获取空格需要显示数量
59             int spaceNum = layer-i; 
60             for(int j=1;j<=spaceNum;j++){  // 需要打印空格的数量
61                 System.out.print(" ");
62             }
63             
64             // 2、获取星星需要显示的数量
65             int starNum = 2*i-1;
66             for(int j=1;j<=starNum;j++){ // 需要打印星星的数量
67                 System.out.print("*");
68             }
69             // 3、换行
70             System.out.println();
71         }
72         
73         // 二、下层(显示 layer-1 行)
74         for(int i=1;i<layer;i++){
75 
76             // 1、获取空格需要显示数量
77             int spaceNum = i;
78             for(int j=1;j<=spaceNum;j++){
79                 System.out.print(" ");
80             }
81             // 2、获取星星需要显示的数量
82             int starNum = 2*(layer-i)-1;
83             for(int j=1;j<=starNum;j++){
84                 System.out.print("*");
85             }
86             // 3、换行
87             System.out.println();
88 
89         }
90     }
91 }

  代码结果显示:

个人博客: woodwhale's blog

微信公众号:木鲸鱼 ID: mujingyu072

原文地址:https://www.cnblogs.com/mujingyu/p/7289905.html