開關(整數或字符變量)
{
case變量的可能值是1:
分支壹;
打破;
case變量的可能值是2:
分支2;
打破;
case變量的可能值是3:
分支三;
打破;
...
默認值:
最後的分支;
}
在switch的語法中,我們要學習四個關鍵詞:switch、case、break和default。
在線路開關中,變量只能是整數或字符。程序先讀取這個變量的值,然後在每個“案例”中找出哪個值等於這個變量。如果相等,即使條件成立,程序也會執行相應的分支,直到遇到break或switch語句的結尾。
知道switch,case,break,default的意思,也有助於理解前面的壹切。它們是:開關、情況、中斷和默認(值)。那麽壹句話的語句就是:根據開關值的不同,執行不同的情況,直到遇到中斷;如果所有條件都不滿足開關值,則執行默認分支。
最後說壹下switch中非常重要的幾個點。
第壹,在switch(整型或字符型變量)中,變量的類型如本文所標註,只能是整型和字符型。它們包含int,char。當然,可以使用無符號類型或不同長度的整數(無符號int、short、無符號char)。此外,枚舉類型也由整數或字符類型在內部實現。所以沒關系。實數(浮點數)不起作用,例如:
浮點數a = 0.123;
開關(a) //錯誤!不是整數或字符類型變量。
{
....
}
第二,case後面可以跟壹個直接的常量值,比如例子中的1,2,3,4,或者壹個常量計算公式,比如2+2,但是不能跟壹個變量或者帶變量的表達式,比如a * 2。當然不能是實數,比如4.1,或者2.0/2。
開關(模板)
{
案例2-1: //正確。
...
案例a-2: //錯誤
...
案例2.0: //錯誤
...
}
此外,在case和常量值之後,需要壹個冒號。請註意不要忽視它。
第三,破的作用。
Break使程序在執行完選定的分支(即由switch連接的壹對{}後)後,跳出整個switch語句,完成switch。如果沒有這個中斷,程序將繼續前進到下壹個分支,直到遇到下壹個中斷或切換完成。
例如,假設程序現在進入case 1:中的分支,但case 1中的分支這次沒有斷開:
案例1:
System.out.println("妳是通過搜索引擎來到這個網站的。");
案例二:
System.out.println("妳是通過朋友介紹來到這個網站的。");
然後,程序輸出“妳通過搜索引擎來到這個網站。”之後會繼續輸出案例2中的“妳是通過朋友介紹來到這個網站的”。。
請將上例中的代碼片段更改為以下內容(紅色部分,即通過添加//使所有break無效。):
...
案例1:
System.out.println("妳是通過搜索引擎來到這個網站的。");
//break;
案例二:
System.out.println("妳是通過朋友介紹來到這個網站的。");
//break;
案例三:
System.out.println("妳是通過報紙雜誌來到這個網站的。");
//break;
案例4:
System.out.println("妳是通過其他途徑來到這個網站的。");
//break;
默認值:
System.out.println("錯誤的選擇!請輸入壹個1 ~ 4的數字進行選擇。");
...
跑完會是什麽結果?請試壹試,然後在作業裏回答我。
第四,default是可選的,我們已經說過它的用法,如果沒有default,程序在switch語句範圍內什麽都不做,找不到匹配的case分支後直接完成切換。也可以註釋掉示例中的默認代碼,然後試用,選擇時輸入5。
...
//默認值:
//cout & lt;& lt“錯誤的選擇!請輸入壹個1 ~ 4的數字進行選擇。"& lt& ltendl
...
第五,必要時可以在每種情況下使用{},顯式生成獨立的復合語句。
之前,當我們談到如果...語句等過程控制語句,我們都用{}生成復合語句:
如果(條件)
{
分支壹;
}
除非分支中只有壹個句子,否則這裏不需要花括號{}。但是,在switch的每個case語句中,我們沒有在語法格式中標記{}。請看:
開關(整數或字符變量)
{
case變量的可能值是1:
分支壹;
打破;
case變量的可能值是2:
....
}
壹般教科書上只說{ 0 }可以省略格分支,但這裏我要提醒大家,任何情況下都不能省略{ 0 }格分支。例如,如果您想在案例中定義壹個變量:
開關(模板)
{
案例1:
int a = 2;//錯誤。由於case的範圍不明確,編譯器無法在此定義變量。
...
案例二:
...
}
在這種情況下,添加{}可以解決問題。
開關(模板)
{
案例1:
{
int a = 2;//正確,變量A明確限定在當前的{}範圍內。
...
}
案例二:
...
}