Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java พิมพ์รูปสามเหลี่ยมดาวชิดบน (Upper Star Triangle Pattern)

การพิมพ์รูปสามเหลี่ยมดาวชิดบน (Upper Star Triangle) ใน Java

รูปสามเหลี่ยมชิดบน (Left-aligned Triangle): ดาวชิดซ้าย เริ่มจาก 1 ดาวเพิ่มขึ้นทีละแถว ใช้ Nested Loops ควบคุมช่องว่างหน้าและดาว

อัลกอริทึม

  1. รับจำนวนแถว n
  2. ลูปแถว i = 0 ถึง n-1
  3. ช่องว่างหน้า: 2*(n-i-1) ช่อง (เพื่อจัดให้อยู่กลาง)
  4. ดาว: i+1 ดวง (พิมพ์ "* " รวมช่องว่าง)
  5. ขึ้นบรรทัดใหม่

ตัวอย่างที่ 1: รับค่าจากผู้ใช้ (Scanner)

import java.util.Scanner;

public class UpperStarTriangle {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("ป้อนจำนวนแถว: ");
        int n = scanner.nextInt();
        
        System.out.println("รูปสามเหลี่ยมดาวชิดบน:");
        
        for (int i = 0; i < n; i++) {
            // ช่องว่างหน้า (2 ช่องต่อระดับ เพื่อจัดกลาง)
            for (int j = 2 * (n - i - 1); j >= 0; j--) {
                System.out.print(" ");
            }
            // ดาว
            for (int j = 0; j <= i; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }
}

ตัวอย่างที่ 2: ค่าคงที่ (Hardcoded)

public class UpperStarTriangle {
    public static void main(String[] args) {
        int n = 8;
        System.out.println("จำนวนแถว: " + n);
        System.out.println("รูปสามเหลี่ยมดาวชิดบน:");
        
        for (int i = 0; i < n; i++) {
            System.out.print(" ".repeat(2 * (n - i - 1)));
            System.out.println("* ".repeat(i + 1).trim());
        }
    }
}

ผลลัพธ์ (n=5)

รูปสามเหลี่ยมดาวชิดบน:
        * 
      * * 
    * * * 
  * * * * 
* * * * *

การปรับปรุง: ใช้ StringBuilder (Java 11+)

public class UpperStarModern {
    public static void main(String[] args) {
        int n = 8;
        StringBuilder sb = new StringBuilder();
        
        for (int i = 0; i < n; i++) {
            sb.append(" ".repeat(2 * (n - i - 1)));
            sb.append("* ".repeat(i + 1).trim());
            sb.append("\n");
        }
        
        System.out.print(sb.toString());
    }
}

รูปแบบแปรผัน: Upper Triangle แบบ Solid (ไม่มีช่องว่างระหว่างดาว, ชิดซ้าย)

public class UpperSolidTriangle {
    public static void main(String[] args) {
        int n = 5;
        
        for (int i = 1; i <= n; i++) {
            System.out.println("*".repeat(i));
        }
    }
}

ผลลัพธ์ Solid Left-aligned (n=5)


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

รูปแบบแปรผัน: Upper Triangle แบบ Centered (Solid Pyramid)

public class CenteredUpperTriangle {
    public static void main(String[] args) {
        int n = 5;
        
        for (int i = 1; i <= n; i++) {
            System.out.print(" ".repeat(n - i));
            System.out.println("*".repeat(2 * i - 1));
        }
    }
}

ผลลัพธ์ Centered Solid (n=5)


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

การวิเคราะห์

  • Time: O(n²)
  • Space: O(1) เพิ่มเติม
  • ช่องว่างหน้า: 2*(n-i-1) ใช้ 2 ช่องต่อระดับ เพื่อจัดให้ดาว "* " อยู่กลาง
  • ดาว: i+1 ดวง (พิมพ์ "* " รวมช่องว่าง)
  • รูปแบบนี้คือครึ่งบนของ Pyramid Star Pattern