for循環輸出菱形的形狀【java】

使用for循環語句輸出如下「菱形」效果:spa

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

代碼  code

 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         // 1、上層(顯示 layer 行)
56         for(int i=1;i<=layer;i++){
57              
58             // 一、獲取空格須要顯示數量
59             int spaceNum = layer-i; 
60             for(int j=1;j<=spaceNum;j++){  // 須要打印空格的數量
61                 System.out.print(" ");
62             }
63             
64             // 二、獲取星星須要顯示的數量
65             int starNum = 2*i-1;
66             for(int j=1;j<=starNum;j++){ // 須要打印星星的數量
67                 System.out.print("*");
68             }
69             // 三、換行
70             System.out.println();
71         }
72         
73         // 2、下層(顯示 layer-1 行)
74         for(int i=1;i<layer;i++){
75 
76             // 一、獲取空格須要顯示數量
77             int spaceNum = i;
78             for(int j=1;j<=spaceNum;j++){
79                 System.out.print(" ");
80             }
81             // 二、獲取星星須要顯示的數量
82             int starNum = 2*(layer-i)-1;
83             for(int j=1;j<=starNum;j++){
84                 System.out.print("*");
85             }
86             // 三、換行
87             System.out.println();
88 
89         }
90     }
91 }

  代碼結果顯示:blog

相關文章
相關標籤/搜索