Java switch 多重選擇語句(學習 Java 編程語言 020)

在處理多個選項時,使用 if/else 結構顯得有些笨拙。Java 有一個 switch 語句。java

switch 語句將從與選項值相匹配的 case 標籤開始執行,直到遇到 break 語句,或者執行到 switch 語句的結束處爲止。若是沒有相匹配的 case 標籤,而有 default 子句,就執行這個子句。ide

下面是一個 switch 的例子:工具

Scanner in = new Scanner(System.in);
System.out.println("請輸入 一、二、三、4 !");
int choice = in.nextInt();
switch(choice) {
    case 1:
        System.out.println("輸入的值爲: " + choice);
        break;
    case 2:
        System.out.println("輸入的值爲: " + choice);
        break;
    case 3:
        System.out.println("輸入的值爲: " + choice);
        break;
    case 4:
        System.out.println("輸入的值爲: " + choice);
        break;
    default:
        System.out.println("bad input");
        break;
}

switch 語句的流程圖

有可能觸發多個 case 分支。若是在 case 分支語句的末尾沒有 break 語句,那麼就會接着執行下一個 case 分支語句。這種狀況至關危險,經常會引起錯誤。爲此,咱們在程序中從不使用 switch 語句。
若是你比咱們更喜歡 switch 語句,編譯代碼時能夠考慮加上 -Xlint:fallthrough 選項,以下所示:
javac -Xlint:fallthrough Test.java
這樣以來,若是某個分支最後缺乏一個 break 語句,編譯器就會給出一個警告消息。
若是你肯定正是想使用這種「直通式」(fallthrough)行爲,能夠爲其外圍方法加上一個標註 @SuppressWarnings("fallthrough")。這樣就不會對這個方法生成警告了。(註解是爲編譯器或處理 Java 源文件或類文件的工具提供信息的一種機制。)code

case 標籤能夠是:blog

  • 類型爲 char、byte、short 或 int 的常量表達式。
  • 從 Java 7 開始,case 標籤還能夠是字符串字面量。
  • 枚舉常量。

當在 switch 語句中使用枚舉常量時,沒必要在每一個標籤中指明枚舉名,能夠由 switch 的表達式值推導得出。例如:
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};字符串

Size sz = Size.SMALL;
switch (sz)
{
    case SMALL: // 不須要使用 Size.SMALL
        ...
        break;
    ...
}
相關文章
相關標籤/搜索