2017年4月4日 星期二

[java] 條件控制

前言:

在 java 的條件控制中可分為 if-else 架構、三元運算子、switch-case 架構這三類,其中 if-else、三元運算子為條件型的判斷,條件必須為 true/false布林值;switch-case 為比對變數型的判斷,條件值比較多可以是 char、byte、short、int、enum、String(JDK7之後)值。有了這些條件控制語法,就可以依照條件的狀態來對程式碼進行控制,以下我會用範例來說明。


條件控制
判斷條件值的型態
if-else 架構
條件型(true / false)
三元運算子
條件型(true / false)
switch-case 架構
比對變數型(char、byte、short、int、enum、String)


1.條件型控制


if 敘述
指某一條件成立,執行某一件事情的概念,其中當條件成立會需要判斷 boolean 值,為true執行,若為false則不執行該區塊程式碼。
int score = 95;
if(score >= 60){
        System.out.println("成績 = " + score);
 }


if/else 敘述
if 語法可以加入 else 表示當 if 不成立的時候要做的事。例如:「如果考試不及格就要補考。」
int score = new Random().nextInt(100);
if(score >= 60){
        System.out.println("成績 = " + score);
        System.out.println("All pass");
} else if(score < 60){
        System.out.println("成績不及格 = " + score);
        System.out.println("需要補考!");
}


多重 if 敘述
有的時候需要判斷"可能狀況"會有好幾種,這個時候可以使用多重IF敘述來描寫。例如:「如果考試成績90分以上為A,80分以上為B,70分以上為C,60分以上為D,60分以下為E等,依分數的多寡作區分。」
int score = new Random().nextInt(100);
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 if(score < 60){ System.out.println("成績 E"); } }

巢狀 if/esle 敘述
if/else 敘述中又包含其它 if 敘述,有的時候需要先做初步判斷好的條件下,再細部判斷處理,這時候就可以使用巢狀敘述。
int score = new Random().nextInt(100);
        if(score >= 60){
            System.out.println("score = " + score);
            System.out.println("All pass");
        } else if(score < 60){
            System.out.println("score = " + score);
            if(score < 60 && score >= 40){
                System.out.println("成績介於60-40分,需要補考!");
            }else if(score < 40 ){
                System.out.println("成績低於40分,需要重修!");
            }
        }


三元運算子
(條件式 ? true : false) 可以說是 if/else 的簡化敘述,也是屬於條件行控制的一種。這邊以巢狀if/else範例做修改,程式如下:
int score = new Random().nextInt(100);
System.out.println("score = " + score);
        if(score >= 60){
            System.out.println("All pass");
        } else if(score < 60){
            System.out.println((score < 60 && score >= 40) ? "成績介於60-40分,需要補考!" : "成績低於40分,需要重修!");
        }


2.比對變數型控制

switch case
跟條件型控制差一樣,也有多選一的的概念,只不多改成以比對變數控制。首先看看switch的括號,當中置放要取得值的變數或運算式,值必須是整數、字元、字串或Enum,取得值後會開始與case中設定的整數、字元、字串或Enum比對,如果符合就執行之後的陳述句,直到遇到break離開switch區塊,如果沒有符合的整數、字元、字串或Enum,則會執行default後的陳述句,default不一定需要,如果沒有預設要處理的動作,也可以省略default。
int score = new Random().nextInt(100);
        int level = score / 10;
        System.out.println("成績 = " + score);
        switch (level) {
            case 10:
            case 9:
                System.out.println("成績 A");
                break;
            case 8:
                System.out.println("成績 B");
                break;
            case 7:
                System.out.println("成績 C");
                break;
            case 6:
                System.out.println("成績 D");
                break;
            default:
                System.out.println("成績不及格,需要補考!");
        }

改寫成switch case程式碼會比 if/else 更容易閱讀,另一方面範例中的level只需要讀取一次,在效能上也會比較好。

[java] 條件控制

前言: 在 java 的條件控制中可分為 if-else 架構、三元運算子、switch-case 架構這三類,其中 if-else、三元運算子為條件型的判斷,條件必須為 true/false布林值;switch-case 為比對變數型的判斷,條件值比較多可以是 char、...