CodeGym /課程 /JAVA 25 SELF /條件運算子:if else

條件運算子:if else

JAVA 25 SELF
等級 3 , 課堂 1
開放

1. 運算子 if else

如果程式無論外部情況怎麼變化都只做同一件事,那就沒什麼用處。程式需要能夠適應不同情境:在某些情況執行某些動作,在另外的情況執行其他動作。

在 Java 中,這是透過 條件運算子——關鍵字 ifelse,可根據條件是否為真來執行不同的語句區塊。

條件運算子由三個部分組成:條件語句 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 後的圓括號內必須是布林運算式——其結果為 truefalse

主要比較運算子:

運算子 含意 範例
==
相等
x == 5
!=
不相等
x != 10
>
大於
x > 0
<
小於
age < 18
>=
大於或等於
score >= 100
<=
小於或等於
count <= 50

條件範例:

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. 特點與細節:

大括號:要不要寫?

如果在 ifelse 之後只有一條語句,可以省略大括號:

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("歡迎!");

第二行會永遠執行——需要加上大括號,才能讓兩行都位於同一個「分支」中。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION