From Gossip@caterpillar

Java Gossip: if 條件式

為了應付程式所可能遇到的各種狀況,Java提供了絛件判斷 - if ,它的語法如下:
if(條件式)
    陳述句一;
else
    陳述句二;

這個語法的意思,白話來說,就是當條件式成立時(true),則執行陳述句一,要不然就執行陳述句二;如果條件式不成立時並不想作任何事,則else可以 省略。

在 if 後如果有兩個以上陳述句,稱之為「複合陳述句」(Compound statement),此時必須使用{ }將複合陳述句包括起來,例如:
if(條件式) {
    陳述句一;
    陳述句二;
}
else {
    陳述句三;
    陳述句四;
}

下面來寫個簡單的程式,判斷使用者的輸入是奇數還是偶數:

  •  ConditionIf.java
import java.util.Scanner;

public class ConditionIf {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

System.out.print("請輸入數字: ");
int input = scanner.nextInt();

int remain = input % 2;

if(remain == 1)
System.out.println(input + "為奇數");
else
System.out.println(input + "為偶數");
}
}

在 if 中也可以再設定執行的條件,例如:
if(條件式一) {
    陳述句一;

    if(條件式二)
        陳述句二;

    陳述句三;
}
 

這只個簡單的例子,其中陳述句二要執行,必須同時滿足條件式一與二才行;再來看個例子:
if(條件式一) {
    陳述句一;
    // 其它陳述句
}
else
    if(條件式二)
        陳述句二;
 

如果條件式一不滿足,就會執行else中的陳述,而我們在這邊進行條件式二的測試,如果滿足就執行陳述句二,由於Java是個自由格式語言,您可以適當的 排列這個程式,這會比較好懂一些:
if(條件式一) {
    陳述句一;
    // 其它陳述句
}
else if(條件式二)
    陳述句二;
 

基於這個方式,您可以如下設定多個條件,且易讀易懂:
if(條件式一)
    陳述一;
else if(條件式二)
    陳述句二;
else if(條件式三)
    陳述句三;
else
    陳述句四;
 

陳述句四會在條件式一、二、三都不成立時執行;下面這個程式是個簡單的例子,處理學生的成績等級問題:

  • ConditionIf.java
import java.util.Scanner;

public class ConditionIf {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

System.out.print("輸入分數:");

int score = scanner.nextInt();

if(score >= 90)
System.out.println("得A");
else if(score >= 80 && score < 90)
System.out.println("得B");
else if(score >= 70 && score < 80)
System.out.println("得C");
else if(score >= 60 && score < 70)
System.out.println("得D");
else
System.out.println("得E(不及格)");
}
}
 
在這邊要注意的是,if與else的配對,例如下面這個程式依縮排來看,您覺得有無問題存在?
if(條件式一)
    if(條件式二)
        陳述句一;
    else
        陳述句二;
 

很多人都會以為條件式二的if會與else配對,但事實上是條件式一的if與else配對,加上括號就不會有問題了:
if(條件式一) {
    if(條件式二)
        陳述句一;
    else
        陳述句二;
}
 
如果想避免這種錯誤,在程式中多使用括號是必要的,多寫一些總是比少寫一些來得保險一點。