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

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

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

รูปสามเหลี่ยมกลับ (Downward/Inverted Triangle) เริ่มจากฐานกว้างสุดที่บน แล้วลดจำนวนดาวลงทีละแถวจนเหลือ 1 ดาว ใช้ Nested Loops ควบคุมช่องว่างหน้าและดาว

อัลกอริทึม

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

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

import java.util.Scanner;

public class DownwardTriangle {
    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++) {
            // ช่องว่างหน้า
            for (int j = 0; j <= i; j++) {
                System.out.print(" ");
            }
            // ดาว
            for (int k = 0; k <= n - 1 - i; k++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }
}

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

public class DownwardTriangle {
    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(i + 1));
            System.out.println("* ".repeat(n - i));
        }
    }
}

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

รูปสามเหลี่ยมดาวกลับ:
* * * * * 
 * * * * 
  * * * 
   * * 
    *

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

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

รูปแบบแปรผัน: Downward Triangle แบบ Solid (ไม่มีช่องว่างระหว่างดาว)

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

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

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

รูปแบบแปรผัน: Downward Triangle ชิดซ้าย (Left-aligned)

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

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

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

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

  • Time: O(n²)
  • Space: O(1) เพิ่มเติม
  • ช่องว่างหน้า: เพิ่มขึ้นทีละ 1 (0, 1, 2, ...)
  • ดาว: ลดลงทีละ 1 (n, n-1, ..., 1)
  • รูปแบบนี้คือครึ่งบนของ Mirror Lower Triangle