1. 程式人生 > >for迴圈輸出菱形的形狀【java】

for迴圈輸出菱形的形狀【java】

使用for迴圈語句輸出以下“菱形”效果:

    *
   ***
  *****
 *******
*********
 ******* 
  *****
   ***
    *
程式碼:
/*
    *
   ***
  *****
 *******
*********
 ******* 
  *****
   ***
    *

分析:
    - 上層(共5層)
        每層構成:每層每層空格數+每層星星數
            第1層 -- 空格數:4 + 星星數:1
            第2層 -- 空格數:3 + 星星數:3
            第3層 -- 空格數:2 + 星星數:5
            第4層 -- 空格數:1 + 星星數:7
            第5層 -- 空格數:0 + 星星數:9
            
            分析:
            第1層 -- 空格數:4(= 5-1) + 星星數:1(= 2*1-1)
            第2層 -- 空格數:3(= 5-2) + 星星數:3(= 2*2-1)
            第3層 -- 空格數:2(= 5-3) + 星星數:5(= 2*3-1)
            第4層 -- 空格數:1(= 5-4) + 星星數:7(= 2*4-1)
            第5層 -- 空格數:0(= 5-5) + 星星數:9(= 2*5-1)

            推理:(上層共 layer 層)
            第i層 -- (空格數 = layer-i) + (星星數 = 2*i-1)


    - 下層(下層共 layer-1 層)
            第1層 -- 空格數:1 + 星星數:7
            第2層 -- 空格數:2 + 星星數:5
            第3層 -- 空格數:3 + 星星數:3
            第4層 -- 空格數:4 + 星星數:1
            
            分析:效果等效(共4層)
            下層的第1層對應上層的第4層 -- 空格數:1 + 星星數:7
            下層的第2層對應上層的第3層 -- 空格數:2 + 星星數:5
            下層的第3層對應上層的第2層 -- 空格數:3 + 星星數:3
            下層的第4層對應上層的第1層 -- 空格數:4 + 星星數:1


            推理:
            第i層 -- (空格數 = i) + (星星數 = 2*(layer-i)-1)
*/


public class StarTree
{
    public static void main(String[] args){
        int layer = 5;

        // 一、上層(顯示 layer 行)
        for(int i=1;i<=layer;i++){
             
            // 1、獲取空格需要顯示數量
            int spaceNum = layer-i; 
            for(int j=1;j<=spaceNum;j++){  // 需要列印空格的數量
                System.out.print(" ");
            }
            
            // 2、獲取星星需要顯示的數量
            int starNum = 2*i-1;
            for(int j=1;j<=starNum;j++){ // 需要列印星星的數量
                System.out.print("*");
            }
            // 3、換行
            System.out.println();
        }
        
        // 二、下層(顯示 layer-1 行)
        for(int i=1;i<layer;i++){

            // 1、獲取空格需要顯示數量
            int spaceNum = i;
            for(int j=1;j<=spaceNum;j++){
                System.out.print(" ");
            }
            // 2、獲取星星需要顯示的數量
            int starNum = 2*(layer-i)-1;
            for(int j=1;j<=starNum;j++){
                System.out.print("*");
            }
            // 3、換行
            System.out.println();

        }
    }
}

程式碼結果顯示: