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

โปรแกรม Java พิมพ์รูปสามเหลี่ยมมุมฉากว่าง (Hollow Right Triangle Star Pattern)

การพิมพ์รูปสามเหลี่ยมมุมฉากว่าง (Hollow Right Triangle) ใน Java

รูปสามเหลี่ยมมุมฉากว่าง: แถวแรกและแถวสุดท้ายพิมพ์ดาวเต็ม แถวกลางพิมพ์ดาวเฉพาะขอบซ้ายและขวา กลางเป็นช่องว่าง

อัลกอริทึม

  1. รับขนาด n (จำนวนแถว)
  2. ลูปแถว i = 1 ถึง n
  3. ถ้า i == 1 หรือ i == n: พิมพ์ดาว i ดวง (แถวเต็ม)
  4. กรณีอื่น: ลูปคอลัมน์ j = 1 ถึง i, พิมพ์ดาวที่ j==1 และ j==i, ที่เหลือพิมพ์ช่องว่าง

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

import java.util.Scanner;

public class HollowRightTriangle {
    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 = 1; i <= n; i++) {
            if (i == 1 || i == n) {
                // แถวแรกและสุดท้าย: ดาวเต็ม
                for (int j = 1; j <= i; j++) {
                    System.out.print("*");
                }
            } else {
                // แถวกลาง: ดาวขอบซ้ายและขวา
                for (int j = 1; j <= i; j++) {
                    if (j == 1 || j == i) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
            }
            System.out.println();
        }
    }
}

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

public class HollowRightTriangle {
    public static void main(String[] args) {
        int n = 8;
        System.out.println("ขนาด: " + n);
        System.out.println("รูปสามเหลี่ยมมุมฉากว่าง:");
        
        for (int i = 1; i <= n; i++) {
            if (i == 1 || i == n) {
                for (int j = 1; j <= i; j++) {
                    System.out.print("*");
                }
            } else {
                for (int j = 1; j <= i; j++) {
                    System.out.print((j == 1 || j == i) ? "*" : " ");
                }
            }
            System.out.println();
        }
    }
}

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

รูปสามเหลี่ยมมุมฉากว่าง:
*
**
* *
*  *
*   *
******

การปรับปรุง: ใช้ StringBuilder และ String.repeat() (Java 11+)

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

รูปแบบแปรผัน: Hollow Right Triangle เฉียงขวา (Right-aligned)

public class RightAlignedHollowTriangle {
    public static void main(String[] args) {
        int n = 6;
        
        for (int i = 1; i <= n; i++) {
            // ช่องว่างหน้า
            System.out.print(" ".repeat(n - i));
            
            if (i == 1 || i == n) {
                System.out.print("*".repeat(i));
            } else {
                System.out.print("*");
                System.out.print(" ".repeat(i - 2));
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

ผลลัพธ์ Right-aligned (n=6)

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

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

  • Time: O(n²)
  • Space: O(1) เพิ่มเติม
  • Logic: แถวแรก/สุดท้าย = solid, แถวกลาง = hollow edges