首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 控制台列印各式三角形與菱形圖案

     編輯:Java 相關知識

透過巢狀迴圈控制空格與星號輸出,可在控制台產生多種幾何圖案。以下整理 10 種常見變體,附完整可執行程式碼。

效果預覽

左對齊三角形 右對齊三角形

完整程式碼

public class PrintTriangle {

    public static void main(String[] args) {
        int n = 5; // 階數
        System.out.println("====== 左對齊正三角形 ======");
        printTopLeft(n);
        System.out.println("====== 左對齊倒三角形 ======");
        printDownLeft(n);
        System.out.println("====== 右對齊正三角形 ======");
        printTopRight(n);
        System.out.println("====== 右對齊倒三角形 ======");
        printDownRight(n);
        System.out.println("====== 置中正三角形 ======");
        printTopCenter(n);
        System.out.println("====== 置中倒三角形 ======");
        printDownCenter(n);
        System.out.println("====== 置中空心正三角形 ======");
        printTopMidBlank(n);
        System.out.println("====== 置中空心倒三角形 ======");
        printDownMidBlank(n);
        System.out.println("====== 人字形 ======");
        printTopRen(n);
    }

    // 左對齊正三角形
    static void printTopLeft(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) System.out.print("* ");
            System.out.println();
        }
    }

    // 左對齊倒三角形
    static void printDownLeft(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = n; j >= i; j--) System.out.print("* ");
            System.out.println();
        }
    }

    // 右對齊正三角形
    static void printTopRight(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = n; j > i; j--) System.out.print("  ");
            for (int j = i; j >= 1; j--) System.out.print("* ");
            System.out.println();
        }
    }

    // 右對齊倒三角形
    static void printDownRight(int n) {
        for (int i = n; i >= 1; i--) {
            for (int j = n; j > i; j--) System.out.print("  ");
            for (int j = i; j >= 1; j--) System.out.print("* ");
            System.out.println();
        }
    }

    // 置中正三角形
    static void printTopCenter(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = i; j < n; j++) System.out.print("  ");
            for (int j = 1; j <= i; j++) System.out.print("* ");
            for (int j = 1; j < i; j++) System.out.print("* ");
            System.out.println();
        }
    }

    // 置中倒三角形
    static void printDownCenter(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j < i; j++) System.out.print("  ");
            for (int j = i; j <= n; j++) System.out.print("* ");
            for (int j = i; j < n; j++) System.out.print("* ");
            System.out.println();
        }
    }

    // 置中空心正三角形
    static void printTopMidBlank(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = i; j < n; j++) System.out.print("  ");
            // 左半邊
            for (int j = 1; j <= i; j++) 
                System.out.print((j == 1 || i == n) ? "* " : "  ");
            // 右半邊
            for (int j = 1; j < i; j++) 
                System.out.print((j == i - 1 || i == n) ? "* " : "  ");
            System.out.println();
        }
    }

    // 置中空心倒三角形
    static void printDownMidBlank(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j < i; j++) System.out.print("  ");
            for (int j = i; j <= n; j++) 
                System.out.print((i == 1 || j == i || i == n) ? "* " : "  ");
            for (int j = i; j < n; j++) 
                System.out.print((i == 1 || j == n - 1) ? "* " : "  ");
            System.out.println();
        }
    }

    // 人字形
    static void printTopRen(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = i; j < n; j++) System.out.print("  ");
            // 左腳
            for (int j = 1; j <= i; j++) 
                System.out.print(j == 1 ? "* " : "  ");
            // 右腳
            for (int j = 1; j < i; j++) 
                System.out.print(j == i - 1 ? "* " : "  ");
            System.out.println();
        }
    }
}

核心邏輯解析

圖案類型外層迴圈空格控制星號邏輯
左對齊行數 1~n無行號 = 星號數
右對齊行數 1~n前置空格 = n - 行號行號 = 星號數
置中對稱行數 1~n前置空格 = n - 行號左半邊 1~行號,右半邊 1~行號-1
空心同置中同置中邊緣(首/尾/底)印星號,其餘印空格
人字形同置中同置中左右兩側各一條斜線

擴展建議

  • 參數化:將星號字元、間距、對齊方式抽為參數,支援自訂樣式。
  • 菱形:正三角形 + 倒三角形(去除重複底邊)。
  • 動畫效果:搭配 Thread.sleep() 與 \r 回車符實現逐行動態顯示。
  • 圖形化輸出:改用 Java 2D API 繪製至 BufferedImage,支援抗鋸齒、畢業色、向量輸出 (SVG/PDF)。

此類控制台圖案練習是掌握迴圈邊界條件、空間想像力的經典入門題,建議初學者手寫推演 2-3 階數值變化,養成「腦中跑迴圈」的直覺。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved