我們生活中總會出現形形色色的選擇,中意選擇的不同,往后的故事往往也不盡相同。計算機中想要實現現實中的選擇交互,就需要用到“選擇語句”。當然簡單的選擇可以用if...else...,但是在多個需要抉擇的情況下,就需要用switch...case語句。下面我們來說說Java中的switch...case...語句的用法,當然我們也可以適當的同C語言中的switch...case...語句的用法做些比較,對比學習。
一個 switch 語句允許測試一個變量等于多個值,每個值稱為一個case。switch 語句會根據測試的變量的值會對每個case 進行檢查,匹配對應的選項,執行不同的處理語句。其處理思路如下圖:
對應到計算機語言的語法:
switch( expression ){
case constant-expression:
語句塊;
break; /* 可選的 */
case constant-expression:
語句塊;
break; /* 可選的 */
...... /* 任意數量 */
default: /* 可選的 */
語句塊;
break; /* 可選的 */
}
switch:表示“開關”:
這個開關就是 switch 關鍵字后面expression的值。expression是一個常量表達式,整型變量或字符型變量(byte、short、int 或者 char)。從 Java SE 7 開始,switch 支持字符串 string類型。同時 case 標簽必須為字符串常量或字面量。注意這里與C語言是有不同的,C語言中只能針對基本數據類型中的整型類型或可以轉換為整型(int、char、byte、short)、枚舉類型使用switch,其他類型必須使用if。
case:表示“情況,情形”:
一個 switch 中可以有任意數量的 case 語句。在每個 case 后要跟一個整型和字符型的常量表達式,和一個冒號。case 的 constant-expression 必須與 switch 中的變量具有相同的數據類型。case 塊可以有多個,順序可以改變,但是每個 case 后的常量值必須各不相同。
break:表示“停止”:
當遇到 break 語句時,switch 語句終止。程序跳轉到 switch 語句后面的語句執行,即跳出當前結構。case 語句不必須要包含 break 語句。當變量的值與 case 語句的值相等時,那么 case 語句之后的語句開始執行,直到 break 語句出現才會跳出 switch 語句。
default:表示“默認”:
一個 switch 語句可以有一個可選的 default,出現在 switch 的結尾。switch 語句在其開始處使用一個簡單的表達式。表達式的結果將與結構中每個 case 子句的值進行比較。default 可用于在上面所有 case 都不為真時執行一個任務。通常,default可以省略不寫,default 中的 break 語句也不是必需的。default 塊和case 塊的先后順序可以變動,不會影響程序執行結果。
例程for JAVA:
public class Test {
public static void main(String[] args){
char a = ‘B’;
switch(a){
case ‘A’ :
System.out.println(" A ");
break;
case ‘B’ :
System.out.println(" B ");
case ‘C’ :
System.out.println(" C ");
case ‘D’ :
System.out.println(" D ");
break;
default :
System.out.println(" default ");
}
}
}
結果:
B
C
D
例程 for C:
int main () {
char grade = 'B';
switch(grade) {
case 'A' :
printf("很棒!\n" );
break;
case 'B' :
printf("做得好\n" );
case 'C' :
printf("您通過了\n" );
case 'D' :
printf("最好再試一下\n" );
break;
default :
printf("無效的成績\n" );
}
return 0;
}
結果:
做得好
您通過了
最好再試一下