1. 運算子 if else
如果程式無論外部情況怎麼變化都只做同一件事,那就沒什麼用處。程式需要能夠適應不同情境:在某些情況執行某些動作,在另外的情況執行其他動作。
在 Java 中,這是透過 條件運算子——關鍵字 if 與 else,可根據條件是否為真來執行不同的語句區塊。
條件運算子由三個部分組成:條件、語句 1 與 語句 2。如果 條件 為真,會執行 語句 1;否則會執行 語句 2。這兩個語句不會同時執行。其一般形式如下:
if (uslovie)
komanda1;
else
komanda2;
if-else
if 直譯為「如果」,而 else 為「否則」。用日常語言可以這樣表達:
Esli uslovie istinno, to
vypolnit’ komanda1;
inache
vypolnit’ komanda2;
if-else 的白話描述
範例:
// 畫面將輸出:你還是孩子
int age = 17;
if (age < 18)
System.out.println("你還是孩子");
else
System.out.println("你已經是大人了");
// 畫面將輸出:暖和
int temperature = 5;
if (temperature < 0)
System.out.println("外面很冷");
else
System.out.println("暖和");
// 畫面將輸出:可以去考駕照
int age = 18;
if (age == 18)
System.out.println("可以去考駕照");
else
System.out.println("可以開始存錢買車");
2. 語句區塊
如果在條件成立(或不成立)時,你想讓程式執行多條語句,可以把它們合併為一個 語句區塊。
要把多條語句合併成區塊,需要用大括號把它們「包起來」。一般形式如下:
{
komanda1;
komanda2;
komanda3;
}
區塊內可以有任意多的語句,甚至是零條。
if-else 與區塊的組合範例:
// 畫面將輸出:你還是孩子。別跟大人頂嘴
int age = 17;
if (age < 18)
{
System.out.println("你還是孩子");
System.out.println("別跟大人頂嘴");
}
else
{
System.out.println("你已經是大人了");
System.out.println("這年頭的年輕人");
}
// 畫面將輸出:暖和
int temperature = 5;
if (temperature < 0)
{
System.out.println("外面很冷");
System.out.println("記得戴帽子");
}
else
System.out.println("暖和");
// 將會執行一個空的語句區塊。畫面不會輸出任何內容。
int age = 21;
if (age == 18)
System.out.println("可以領取駕照");
else
{
}
3. if 運算子的簡寫語法
如果 else 區塊沒有任何程式碼,可以省略它。此時運算子 if 的寫法如下:
if (uslovie)
{
komanda1;
}
if
範例:
int age = 19;
if (age >= 18)
{
System.out.println("你已成年!");
}
這怎麼運作?
如果條件為真,就執行該區塊的程式碼;如果為假,就什麼都不做——程式繼續往下執行。
程式裡的 else 區塊雖然存在,但它是空的(大括號之間沒有任何語句)。你可以把它直接移除:程式的行為不會因此改變。
4. 條件的組合:else if
有時不僅是「是/否」的判斷,而是要在多個選項中擇一。這時可以使用 else if 串接:
if (uslovie1)
{
// 若 uslovie1 為真則執行
}
else if (uslovie2)
{
// 若 uslovie2 為真且 uslovie1 為假則執行
}
else
{
// 若以上條件皆不符合則執行
}
範例:
int hour = 13;
if (hour < 12)
{
System.out.println("早安!");
}
else if (hour < 18)
{
System.out.println("午安!");
}
else
{
System.out.println("晚上好!");
}
這裡發生了什麼事?
- 若時間小於 12 —— 早上。
- 若介於 12 到 18 —— 白天。
- 如果更大 —— 晚上。
- 程式只會選擇其中「一個」分支!一旦條件符合——後面的條件就不再檢查。
5. 示意圖:分支流程圖
以流程圖表示如下:
若有多個條件:
這很像桌上型角色扮演遊戲裡的分岔:往左——一種結果,往右——另一種,直走——又是不同的路!
6. 可以檢查哪些條件?
在 if 後的圓括號內必須是布林運算式——其結果為 true 或 false。
主要比較運算子:
| 運算子 | 含意 | 範例 |
|---|---|---|
|
相等 | |
|
不相等 | |
|
大於 | |
|
小於 | |
|
大於或等於 | |
|
小於或等於 | |
條件範例:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
請注意:=(單一符號)是指定。==(兩個等號)是比較。這是新手最常犯的錯之一!如果你不小心寫成:
if (x = 5) // 錯誤!
——編譯器會報錯,這是完全正確的。
7. 在條件中處理字串
用 == 在 Java 中比較數值是可行的。不建議用 == 比較浮點數;而比較字串時不能用 ==——請改用 equals() 方法,它會比較字串的內容(而不是引用)。
關於字串比較的細節我們稍後再談。正確比較字串的方法如下:
String password = console.nextLine();
if (password.equals("qwerty")) // 呼叫 equals() 方法並傳入第二個字串
{
System.out.println("你已登入!");
}
8. 特點與細節:
大括號:要不要寫?
如果在 if 或 else 之後只有一條語句,可以省略大括號:
if (age > 18)
System.out.println("你已超過 18 歲!");
// 但更安全的做法是「永遠」把它們寫上:
if (age > 18)
{
System.out.println("你已超過 18 歲!");
}
建議:一律寫上大括號。這能避免許多錯誤,尤其是在擴充程式碼時。
邏輯錯誤:小心條件與縮排!
如果你這麼寫:
if (age > 18)
System.out.println("你已超過 18 歲!");
System.out.println("歡迎!");
編譯器會把它理解為:
if (age > 18)
{
System.out.println("你已超過 18 歲!");
}
System.out.println("歡迎!");
第二行會永遠執行——需要加上大括號,才能讓兩行都位於同一個「分支」中。
GO TO FULL VERSION