初學者常以巢狀迴圈列印圖形練習流程控制邏輯。本文彙整 11 種經典幾何圖形的 Java 完整實作:**長方形、直角三角形(四種變體)、等腰三角形(正/倒)、平行四邊形(兩種)、直角梯形、菱形**,程式碼結構清晰,可直接複製執行觀察輸出規律。
public class ShapePrinter {
private static final int SIZE = 10;
public static void main(String[] args) {
printRectangle();
printRightTriangleBottomLeft();
printRightTriangleBottomRight();
printRightTriangleTopLeft();
printRightTriangleTopRight();
printIsoscelesTriangle();
printInvertedIsoscelesTriangle();
printParallelogramLeft();
printParallelogramRight();
printRightTrapezoid();
printDiamond();
}
// 1. 長方形
static void printRectangle() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 2. 倒直角三角形(左對齊)
static void printRightTriangleBottomLeft() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE - i; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 3. 倒直角三角形(右對齊)
static void printRightTriangleBottomRight() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < i; j++) System.out.print(" ");
for (int j = 0; j < SIZE - i; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 4. 正直角三角形(左對齊)
static void printRightTriangleTopLeft() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j <= i; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 5. 正直角三角形(右對齊)
static void printRightTriangleTopRight() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE - i - 1; j++) System.out.print(" ");
for (int j = 0; j <= i; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 6. 平行四邊形(左傾)
static void printParallelogramLeft() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < i; j++) System.out.print(" ");
for (int j = 0; j < SIZE; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 7. 平行四邊形(右傾)
static void printParallelogramRight() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE - i; j++) System.out.print(" ");
for (int j = 0; j < SIZE; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 8. 直角梯形
static void printRightTrapezoid() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) System.out.print("*");
for (int j = 0; j < i; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 9. 等腰三角形(正)
static void printIsoscelesTriangle() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE - i; j++) System.out.print(" ");
for (int j = 0; j < 2 * i + 1; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 10. 等腰三角形(倒)
static void printInvertedIsoscelesTriangle() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < i; j++) System.out.print(" ");
for (int j = 0; j < 2 * (SIZE - i) - 1; j++) System.out.print("*");
System.out.println();
}
blankLine();
}
// 11. 菱形(正 + 倒等腰三角形組合)
static void printDiamond() {
// 上半部
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE - i; j++) System.out.print(" ");
for (int j = 0; j < 2 * i + 1; j++) System.out.print("*");
System.out.println();
}
// 下半部
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < i; j++) System.out.print(" ");
for (int j = 0; j < 2 * (SIZE - i) - 1; j++) System.out.print("*");
System.out.println();
}
}
static void blankLine() { System.out.println(); }
}
| 圖形 | 外層迴圈 | 內層邏輯關鍵 |
|---|---|---|
| 直角三角形 | 行數 i | 列數與 i 線性相關(i, SIZE-i) |
| 等腰三角形 | 行數 i | 空格 = SIZE-i,星號 = 2*i+1 |
| 平行四邊形 | 行數 i | 前導空格遞增/遞減,星號固定 SIZE |
| 菱形 | 兩段迴圈 | 上半部正等腰,下半部倒等腰 |
SIZE 改為命令列參數或 Scanner 輸入。StringBuilder 累積每行再輸出,減少 I/O 呼叫。printLine(int spaces, int stars) 復用。透過這些經典圖形練習,能扎實掌握巢狀迴圈、索引運算與輸出控制,為演算法思維打下基礎。