1. java中的switch語句怎麼使用
switch 語句的格式:
switch ( 整型或字元型變數 )
{
case 變數可能值1 :
分支一;
break;
case 變數可能值2 :
分支二;
break;
case 變數可能值3 :
分支三;
break;
...
default :
最後分支;
}
在 switch 的語法里,我們要學到4個關鍵字:switch、case 、break、default。
在switch ( 變數 )這一行里,變數只能是整型或字元型。程序先讀出這個變數的值,然後在各個"case"里查找哪個值和這個變數相等,如果相等,就算條件成立,程序執行相應的分支,直到碰上break或者switch語句結束。
了解一下switch,case,break,default的意思,對理解前面的一切也會有幫助,它們分別是:開關,情況,中斷,默認(值)。那麼用一句話套起來的說法就是:根據開關值的不同,執行不同的情況,直到遇上中斷;如果所有的情況都不符合開關值,那麼就執行默認的分支。
最後說一下關於switch中非常重要的幾個注意點。
第一、switch ( 整型或字元型變數 )中,變數的類型如文中所標,只能是整型和字元類型。它們包含 int,char。當然無符類型或不同的長度整型(unsigned int,short,unsigned char)等都可以。另外,枚舉類型(enum)內部也是由整型或字元類型實現。所以也可以。實型(浮點型)數就不行,如:
float a = 0.123;
switch(a) //錯誤!a不是整型或字元類型變數。
{
....
}
第二、case之後可以是直接的常量數值,如例中的1、2、3、4,也可以是一個使用常量計算式,如2+2等,但不能是變數或帶有變數的表達式,如 a * 2等。當然也不能是實型數,如4.1,或2.0 / 2等。
switch(formWay)
{
case 2-1 : //正確
...
case a-2 : //錯誤
...
case 2.0 : //錯誤
...
}
另外,在case與常量值之後,需要一個冒號,請注意不要疏忽。
第三、break 的作用。
break 使得程序在執行完選中的分支後,可以跳出整個switch語句(即跳到switch接的一對{}之後),完成switch。如果沒有這個break,程序將在繼續前進到下一分支,直到遇到後面的break或者switch完成。
比如,假設現在程序進入case 1: 中的分支,但case 1的分支這回沒有加break:
case 1 :
System.out.println("您是通過搜索引擎來到本網站的。");
case 2 :
System.out.println("您是通過朋友介紹來到本網站的。");
那麼,程序在輸出"您是通過搜索引擎來到本網站的。" 之後,會繼續輸出case 2中的"您是通過朋友介紹來到本網站的。" 。
請大家將前面實例中的代碼片段改為如下(紅色部分,即將所有的break都通過加//使之無效。):
...
case 1 :
System.out.println("您是通過搜索引擎來到本網站的。" );
//break;
case 2 :
System.out.println("您是通過朋友介紹來到本網站的。");
//break;
case 3 :
System.out.println("您是通過報刊雜志來到本網站的。");
//break;
case 4 :
System.out.println("您是通過其它方法來到本網站的。");
//break;
default :
System.out.println("錯誤的選擇!請輸入1~4的數字做出選擇。");
...
運行後,結果會是如何?請大家動手試試,然後在作業中回答我。
第四、default是可選中,前面我們已經說過它的用處,及如果沒有default,程序在找不到匹配的case分支後,將在switch語句范圍內不做什麼事,直接完成switch。大家也可以在實例中將default的代碼注釋掉,然後試運行,並且在選擇時輸入5。
...
//default :
//cout << "錯誤的選擇!請輸入1~4的數字做出選擇。" << endl;
...
第五、必要時,可在各個case中使用{}來明確產生獨立的復合語句。
前面我們在講if...語句和其它流程式控制制語句時,都使用{}來產生復合語句:
if (條件)
{
分支一;
}
除非在分支中的語句正好只有一句,這里可以不需要花括弧{}。但在switch的各個case語句里,我們在語法格式上就沒有標出要使用{},請看:
switch ( 整型或字元型變數 )
{
case 變數可能值1 :
分支一;
break;
case 變數可能值2 :
....
}
一般教科書上只是說 case 分支可以不使用{},但這里我想提醒大家,並不是任何情況下case分支都可以不加{},比如你想在某個case里定義一個變數:
switch (formWay)
{
case 1 :
int a=2; //錯誤。由於case不明確的范圍,編譯器無法在此處定義一個變數。
...
case 2 :
...
}
在這種情況下,加上{}可以解決問題。
switch (formWay)
{
case 1 :
{
int a=2; //正確,變數a被明確限定在當前{}范圍內。
...
}
case 2 :
...
}
2. JAVA中switch語句格式
在JAVA語言中,switch語句用於根據給定的表達式選擇執行一系列case分支中的一個。基本格式為:
switch(表達式){
case值 1:
語句體1;
break;
case值 2;
語句體1;
break;
.......
default:
語句體n+1;
break;
}
說明:
1. 當switch語句中的表達式與case後面的值相匹配時,執行對應case分支的語句體。使用break語句終止當前case分支的執行,避免後續case分支被執行。
2. default分支是可選的,用於處理沒有匹配到任何case值的情況。如果表達式與所有case值都不匹配,則執行default分支的語句體。
3. case具有穿透性,即匹配上一個case分支後,自動執行break,跳轉至下一個case分支或default分支。如果省略break,程序會繼續執行下一個case分支,直至遇到break。
4. switch語句與if的第三種格式的使用場景不同:
1. if的第三種格式用於對范圍的判斷,如判斷一個變數是否在指定的范圍內。
2. switch:適合將有限的選項一一列舉出來,進行選擇性執行。通常用於條件判斷,將輸入的值與多個預設值進行比較,並執行相應的操作。
3. java里switch的case分支輸入的變數在執行完分支後還保留嗎
這個得看你聲明變數的位置
如果你在switch語句外聲明的變數 ,在case分支里輸入值,那麼這個結果會被保留,反之亦然
跟局部變數和全局變數類似,局部變數不可在非局部內調用,全局變數就可以
4. switch函數
答案:
switch函數是一種程序設計中的流程式控制制語句,用於根據不同的條件執行不同的代碼塊。它允許程序根據某個表達式的值,從一個或多個預定義的代碼塊中選擇一個來執行。switch函數的使用方法因編程語言而異。
詳細解釋:
switch函數是一種條件控制結構,它的作用是根據不同的條件執行不同的代碼塊。在許多編程語言中,如C、C++、Java等,switch語句都是用來進行多選擇的。它允許開發者通過一個表達式的結果來指定程序應該執行哪一段代碼。當表達式的值與switch語句中的某個case匹配時,程序就會執行該case後面的代碼塊。如果沒有匹配的case,那麼還有一個默認的代碼塊可以執行,通常被稱為default。
使用switch函數時,需要注意以下幾點:
1. switch後面的表達式通常是一個變數或者一個能夠返回值的表達式,其值會與每個case進行比較。這個表達式的值必須是能夠和case中的值進行精確比較的,比如整數或字元串等。
2. 每個case後面跟一個或多個要執行的語句,這些語句定義了當表達式與某個case匹配時要進行的操作。
3. 如果表達式的值與任何case都不匹配,且存在default分支,則會執行default分支中的代碼。default分支是可選的。
4. switch語句的執行效率通常比多個if-else語句要高,特別是在有多個分支需要檢查的情況下。但這也取決於具體的編程環境和編譯器優化。
由於不同編程語言的語法規則存在差異,使用switch函數時還需要參考對應語言的規范或文檔。但大體上,switch函數的基本結構和用法是相似的。
5. java中switch內局部變數的作用域范圍
這和switch中定義的變數的作用與有關,你可以強制限制一下變數的作用域,也就是加個大括弧:
intnumber=2;
switch(number){
case1:
{
intm=100;
System.out.println(m);
}
break;
case2:
{
intm=10;
System.out.println(m);
}
break;
default:
System.out.println(100);
break;
}