條件判斷是程序邏輯的基石。本文面向初學者,系統講解 if-else 多重分支與 switch-case 的語法細節、常見陷阱及選型建議,並附帶可直接運行的代碼範例。
import java.util.Scanner;
public class IfDemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入假期天數:");
int holiday = input.nextInt();
if (holiday > 6) {
System.out.println("去海南 🌴");
} else if (holiday > 3) {
System.out.println("去海邊 🏖️");
} else {
System.out.println("在家宅著 🏠");
}
}
}
關鍵點:
true 進入對應塊,其餘跳過;{} 雖然單語句可省略,但強烈建議保留,防止後期維護引入 Bug;Scanner 需關閉或嘗試資源關閉(JDK 7+ try-with-resources)。import java.util.Scanner;
public class SwitchDemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入 1-5 之間的數字:");
int number = input.nextInt();
switch (number) {
case 1: System.out.println("一"); break;
case 2: System.out.println("二"); break;
case 3: System.out.println("三"); break;
case 4: System.out.println("四"); break;
case 5: System.out.println("五"); break;
default: System.out.println("輸入錯誤 ❌");
}
}
}
default 可置頂、置中、置尾,建議放最後;byte, short, int, char, String (JDK 7+), enum (JDK 5+);不支持 long, float, double, boolean;String result = switch (number) {
case 1, 2 -> "低";
case 3, 4 -> "中";
case 5 -> "高";
default -> "無效";
};
| 場景 | 推薦 | 理由 |
|---|---|---|
區間判斷(如 score >= 90) | if-else | switch 僅支持等值匹配 |
| 離散常量匹配(枚舉、菜單選項) | switch | 語法清晰,JVM 可優化為 tableswitch/lookupswitch 指令 |
| 複雜布爾表達式組合 | if-else | switch 無法直接表達 |
switch(str) { case "a" || "b": ... } → ✅ 分開寫兩個 case;break 導致邏輯貫穿 → ✅ 習慣寫上或改用 JDK 12+ 箭頭語法;== 比較 String → ✅ 用 equals() 或 Objects.equals()。「條件結構是邏輯的骨架,寫清每一個分支,程序才能跑直每一條路。」