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

Java 列印金字塔、倒金字塔與菱形圖案完整教學

     編輯:Java 相關知識

核心邏輯:空格與星號規律

以 5 行正金字塔為例:

行數空格數星號數規律
141空格 = 總行 - 當前行,星號 = 2×行 - 1
233
325
417
509

完整可互動程式碼

import java.util.Scanner;

public class Pyramid {
    static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        entrance();
    }

    static void entrance() {
        System.out.println("請選擇(0-正金字塔,1-倒金字塔,2-菱形):");
        String sel = input.nextLine();
        if (!sel.matches("\\d+")) { error(); return; }
        switch (Integer.parseInt(sel)) {
            case 0 -> upright();
            case 1 -> inverted();
            case 2 -> diamond();
            default -> { System.out.println("選項錯誤"); entrance(); }
        }
    }

    static void upright() {
        int rows = readRows(); if (rows <= 0) return;
        for (int i = 1; i <= rows; i++) {
            printSpaces(rows - i);
            printStars(2 * i - 1);
            System.out.println();
        }
        done();
    }

    static void inverted() {
        int rows = readRows(); if (rows <= 0) return;
        for (int i = rows; i >= 1; i--) {
            printSpaces(rows - i);
            printStars(2 * i - 1);
            System.out.println();
        }
        done();
    }

    static void diamond() {
        int rows = readRows(); if (rows <= 0) return;
        // 上半部
        for (int i = 1; i <= rows; i++) {
            printSpaces(rows - i);
            printStars(2 * i - 1);
            System.out.println();
        }
        // 下半部(不含中間行)
        for (int i = rows - 1; i >= 1; i--) {
            printSpaces(rows - i);
            printStars(2 * i - 1);
            System.out.println();
        }
        done();
    }

    static int readRows() {
        System.out.print("請輸入行數:");
        String s = input.nextLine();
        if (!s.matches("\\d+")) { error(); return -1; }
        return Integer.parseInt(s);
    }

    static void printSpaces(int n) { for (int i = 0; i < n; i++) System.out.print(" "); }
    static void printStars(int n) { for (int i = 0; i < n; i++) System.out.print("★"); }
    static void error() { System.out.println("輸入非數字,請重新輸入"); }
    static void done() { System.out.println("列印完成"); }
}

關鍵技巧

  • 拆分 printSpaces/printStars 方法,主迴圈清晰可讀
  • 用 print 不換行,println 換行
  • 菱形 = 正金字塔 + 倒金字塔(去頭)
  • 輸入驗證用 matches("\\d+") 防呆
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved