選擇結構有單一選擇跟多重選擇,兩者都可使用 if 陳述 (if statement) , if 為關鍵字 (keyword) 之一,若是多重選擇 if 須與 else 連用。單一選擇,也就是單獨使用 if 陳述,如下
if (3 > 5) { System.out.println("喔,3大於5發生了!"); }
以上條件為 3 大於 5 ,如果 3 大於 5 為真,程式就會執行條件後的大括弧的程式區塊 (block) ,如果 3 大於 5 為假,程式就會跳過條件後的程式區塊,去找程式區塊後的第一個陳述 (statement) 執行。
if 與 else 連用,條件為真,就會執行 if 後的程式區塊,反之條件為假,就會執行 else 後的程式區塊
if (3 > 5) { System.out.println("喔,3大於5發生了!"); } else { System.out.println("還好,3沒有大於5!"); }
if-else 也可以多個連用,形成 if-else if-else 的多重選擇,最後的 else 表示以上皆非
if (3 > 5) { System.out.println("喔,3大於5發生了!"); } else if (4 > 5) { System.out.println("喔,4大於5發生了!"); } else if (5 > 5) { System.out.println("喔,5大於5發生了!"); } else if (6 > 5) { System.out.println("6當然大於5哩!"); } else { System.out.println("以上沒有符合的條件 :("); }
我們將以上寫成完整的範例程式,如下
// 示範 if-else 的類別 public class SelectionDemo { public static void main(String[] args) { System.out.println(); if (3 > 5) { System.out.println("喔,3大於5發生了!"); } else if (4 > 5) { System.out.println("喔,4大於5發生了!"); } else if (5 > 5) { System.out.println("喔,5大於5發生了!"); } else if (6 > 5) { System.out.println("6當然大於5哩!"); } else { System.out.println("以上沒有符合的條件 :("); } System.out.println(); } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:SelectionDemo.java 功能:示範 Java 程式 作者:張凱慶 時間:西元 2011 年 4 月 */
編譯 (compile) 後執行,如下
if-else if-else 的缺點是需要很多個條件,程式需要做多次條件判斷,因此另外有個 switch 陳述 (switch statement) ,條件為一個常數 (constant) 值,這會依序尋找符合的 case 。同樣的 switch 、 case 也都是關鍵字
switch (6) { case 3: System.out.println("選擇是3..."); break; case 4: System.out.println("選擇是4..."); break; case 5: System.out.println("選擇是5..."); break; case 6: System.out.println("選擇是6..."); break; default: System.out.println("以上沒有符合的條件 :("); }
這裡, switch 後面的小括弧必須是常數值,此例中直接使用字面常數 (literal) ,也可以使用有常數值的變數 (variable) 。 case 後空一格,然後也是接常數值,通常就是直接填入符合情況的字面常數,注意,每個 case 的常數後都要接冒號。
case 底下的陳述,習慣上沒有用大括弧,而是用縮排 (indentation) 的方式表示屬於哪個 case 。每個 case 的最後,我們都有加上 break 陳述 (break statement) ,這會讓程式中斷然後跳出整個 switch 陳述,這就是說找到符合的 case 以後,執行完 case 底下的工作,到此就跳出 switch-case 的範圍,然後程式繼續執行switch 大括弧後的部份。
整個 switch-case 最下面有個 default , default 就是預設情況,如果以上皆非就會執行 default 的地方,這跟 if-else if-else 最後的 else 的用法相同。但是,如果 case 後沒有 break 的話,這樣 default 每一次都會被執行。同樣的, break 與 default 也都是關鍵字之一。
我們將此例寫成完整的範例程式,如下
// 示範 switch-case 的類別 public class SwitchDemo { public static void main(String[] args) { System.out.println(); switch (6) { case 3: System.out.println("選擇是3..."); break; case 4: System.out.println("選擇是4..."); break; case 5: System.out.println("選擇是5..."); break; case 6: System.out.println("選擇是6..."); break; default: System.out.println("以上沒有符合的條件 :("); } System.out.println(); } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:SwitchDemo.java 功能:示範 Java 程式 作者:張凱慶 時間:西元 2011 年 4 月 */
編譯後執行,如下
複合陳述 (compound statement) 除了選擇結構 (selection structure) 還有重複結構 (repetition structure) ,重複結構也被稱為迴圈 (loop) ,接下來我們就來看看如何使用迴圈吧!
中英文術語對照 | |
---|---|
選擇 | selection |
條件 | condition |
if 陳述 | if statement |
關鍵字 | keyword |
程式區塊 | block |
陳述 | statement |
編譯 | compile |
switch 陳述 | switch statement |
常數 | constant |
字面常數 | literal |
縮排 | indentation |
break 陳述 | break statement |
複合陳述 | compound statement |
選擇結構 | selection structure |
重複結構 | repetition structure |
迴圈 | loop |
您可以繼續參考
基礎篇
相關目錄
回 Java 入門指南
回 Java 教材目錄
回首頁
參考資料
The JavaTM Tutorials: Getting Started
The JavaTM Tutorials: Learning the Java Language
The JavaTM Tutorials: Essential Classes
The Java Language Specification, Third Edition
本文於 2013 年 1 月訂正
4 則留言:
編議 if-else範例 出現以下錯誤
Demo4.java:2: error: class SelectionDemo is public, should be declared in a file
named SelectionDemo.java
public class SelectionDemo {
^
1 error
檔名必須和類別名稱相同唷,請將 Demo4.java 的檔名變更為 SelectionDemo.java
不然就將 SelectionDemo 的類別名稱改為 Demo4
case 5: System.out.println("選擇是3...");
→ 後面應該改為:選擇是5吧!
這部份打錯了,已修改,感謝指正 :)
張貼留言