在 Java 程式設計的基礎練習中,打印幾何圖形是經典的邏輯訓練題目。本文將展示如何使用巢狀迴圈與條件判斷,繪製出任意指定大小(對角線長度)的菱形。程式碼採用數學座標的思維,透過行列索引關係精確控制星號的輸出位置。
菱形可視為正方形區域內的特定像素點集合。假設菱形的對角線長度為 number(必須為奇數),則總共需要打印 number 行,每行 number 列。關鍵在於判斷當前座標 (i, y) 是否落在菱形的四條邊界上:
y == number/2 - iy == number/2 + ii == number/2 + yy == number - i + number/2 - 1 且 i > number/2滿足任一條件即輸出 *,否則輸出空格,最後換行。
public class RhombusPrinter {
public static void main(String[] args) {
// 設定菱形對角線長度 (需為奇數)
printRhombus(29);
}
/**
* 打印指定大小的菱形
* @param number 對角線長度,建議使用奇數
*/
private static void printRhombus(int number) {
for (int i = 0; i < number; i++) { // 控制行
for (int y = 0; y < number; y++) { // 控制列
// 判斷是否為菱形邊界點
if (y == number/2 - i
|| y == number/2 + i
|| i == number/2 + y
|| (y == number - i + number/2 - 1 && i > number/2)) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println(); // 換行
}
}
}
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
程式碼中保留了多個演進版本的方法(scriber1 到 scriber4),展示了從簡單的左上角邊界嘗試,到完整四邊封閉的重構過程。這對於理解迴圈不變量與邊界條件的調試非常有幫助。若需支援偶數大小,只需調整中線計算邏輯即可。