Java基礎(chǔ)之switch分支結(jié)構(gòu)詳解
一、基本語(yǔ)法

二、流程圖
1.畫出 swtich 出流程
2.案例說(shuō)明流程圖
三、快速入門
- 案例:Switch01.java
請(qǐng)編寫一個(gè)程序,該程序可以接收一個(gè)字符,比如:a,b,c,d,e,f,g
a 表示星期一,b 表示星期二 …
根據(jù)用戶的輸入顯示相應(yīng)的信息.要求使用 switch 語(yǔ)句完成
代碼:
/*
案例:Switch01.java
請(qǐng)編寫一個(gè)程序,該程序可以接收一個(gè)字符,比如:a,b,c,d,e,f,g
a表示星期一,b表示星期二 …
根據(jù)用戶的輸入顯示相應(yīng)的信息.要求使用 switch 語(yǔ)句完成
思路分析
1. 接收一個(gè)字符 , 創(chuàng)建Scanner對(duì)象
2. 使用switch 來(lái)完成匹配,并輸出對(duì)應(yīng)信息
代碼
*/
Scanner myScanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入一個(gè)字符(a-g)");
char c1 = myScanner.next().charAt(0);//
//在java中,只要是有值返回,就是一個(gè)表達(dá)式
switch(c1) {
case 'a' :
System.out.println("今天星期一,猴子穿新衣");
break;
case 'b' :
System.out.println("今天星期二,猴子當(dāng)小二");
break;
case 'c' :
System.out.println("今天星期三,猴子爬雪山..");
break;
//.....
default:
System.out.println("你輸入的字符不正確,沒(méi)有匹配的");
}
System.out.println("退出了switch ,繼續(xù)執(zhí)行程序");

四、switch 注意事項(xiàng)和細(xì)節(jié)討論

//細(xì)節(jié)1
//表達(dá)式數(shù)據(jù)類型,應(yīng)和case 后的常量類型一致,
//或者是可以自動(dòng)轉(zhuǎn)成可以相互比較的類型,比如輸入的是字符,而常量是 int
//細(xì)節(jié)2
//switch(表達(dá)式)中表達(dá)式的返回值必須是:
//(byte,short,int,char,enum[枚舉],String)
//細(xì)節(jié)3
//case子句中的值必須是常量(1,'a')或者是常量表達(dá)式,而不能是變量
//
//細(xì)節(jié)4
//default子句是可選的,當(dāng)沒(méi)有匹配的case時(shí),執(zhí)行default
//如果沒(méi)有default 子句,有沒(méi)有匹配任何常量,則沒(méi)有輸出
//
//細(xì)節(jié)5
//break語(yǔ)句用來(lái)在執(zhí)行完一個(gè)case分支后使程序跳出switch語(yǔ)句塊;
//如果沒(méi)有寫break,程序會(huì)順序執(zhí)行到switch結(jié)尾,除非執(zhí)行到break
char c = 'b';
char c2 = 'c';
switch(c) {
case 'a' :
System.out.println("ok1");
break;
case 'b' :
System.out.println("ok2");
break;
default :
System.out.println("ok3");
}
System.out.println("退出了switch,繼續(xù)執(zhí)行..");

把上面的case b中的 break 都去掉,會(huì)都執(zhí)行下面輸出語(yǔ)句,不會(huì)跳出來(lái)。
五、switch 課堂練習(xí)
SwitchExercise.java
1.使用 switch 把小寫類型的 char 型轉(zhuǎn)為大寫(鍵盤輸入)。只轉(zhuǎn)換 a, b, c, d, e. 其它的輸出 “other”。
//使用 switch 把小寫類型的
//char型轉(zhuǎn)為大寫(鍵盤輸入)。只轉(zhuǎn)換 a->A, b->B, c, d, e.
//其它的輸出 "other"。
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入a-e");
char c1 = sc.next().charAt(0);
switch(c1) {
case 'a' :
System.out.println("A");
break;
case 'b' :
System.out.println("B");
break;
case 'c' :
System.out.println("C");
break;
case 'd' :
System.out.println("D");
break;
case 'e' :
System.out.println("E");
break;
default :
System.out.println("你的輸入有誤~");
}

2.對(duì)學(xué)生成績(jī)大于 60 分的,輸出"合格"。低于 60 分的,輸出"不合格"。(注:輸入的成績(jī)不能大于 100), 提示: 成績(jī)/60
//對(duì)學(xué)生成績(jī)大于60分的,輸出"合格"。低于60分的,
//輸出"不合格"。(注:輸入的成績(jī)不能大于100), 提示 成績(jī)/60
//思路分析
//1. 這道題,可以使用 分支來(lái)完成, 但是要求使用switch
//2. 這里我們需要進(jìn)行一個(gè)轉(zhuǎn)換, 編程思路 :
// 如果成績(jī)?cè)?[60,100] , (int)(成績(jī)/60) = 1
// 如果成績(jī)?cè)?[0,60) , (int)(成績(jī)/60) = 0
//代碼實(shí)現(xiàn)
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入成績(jī)?cè)?-100之間:");
double score = sc.nextDouble();
if (score >= 0 && score<=100) {
switch ((int) (score / 60)) {
case 0:
System.out.println("不合格");
break;
case 1:
System.out.println("合格");
}
}else{
System.out.println("請(qǐng)輸入成績(jī)?cè)?-100之間");
}

3.根據(jù)用于指定月份,打印該月份所屬的季節(jié)。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [課堂練習(xí), 提示: 使用穿透 ]
//根據(jù)用于指定月份,
//打印該月份所屬的季節(jié)。
//3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
//[課堂練習(xí), 提示 使用穿透 ]
//
//思路分析
//1. 創(chuàng)建Scanner對(duì)象, 接收用戶輸入
//2. 使用 int month 接收
//3. 使用switch 來(lái)匹配 ,使用穿透來(lái)完成,比較簡(jiǎn)潔
Scanner myScanner = new Scanner(System.in);
System.out.println("輸入月份");
int month = myScanner.nextInt();
switch(month) {
case 3:
case 4:
case 5:
System.out.println("這是春季");
break;
case 6:
case 7:
case 8:
System.out.println("這是夏季");
break;
case 9:
case 10:
case 11:
System.out.println("這是秋季");
break;
case 1:
case 2:
case 12:
System.out.println("這是冬季");
break;
default :
System.out.println("你輸入的月份不對(duì)(1-12)");
}

六、switch 和 if 的比較
如果判斷的具體數(shù)值不多,而且符合 byte、 short 、int、 char, enum[枚舉], String 這 6 種類型。雖然兩個(gè)語(yǔ)句都可以使用,建議使用 swtich 語(yǔ)句。其他情況:對(duì)區(qū)間判斷,對(duì)結(jié)果為 boolean 類型判斷,使用 if,if 的使用范圍更廣。
到此這篇關(guān)于Java基礎(chǔ)之switch分支結(jié)構(gòu)詳解的文章就介紹到這了,更多相關(guān)Java switch分支結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)的密碼強(qiáng)度檢測(cè)功能完整示例
這篇文章主要介紹了java實(shí)現(xiàn)的密碼強(qiáng)度檢測(cè)功能,結(jié)合完整實(shí)例形式分析了java針對(duì)密碼強(qiáng)度檢測(cè)相關(guān)的字符串遍歷、判斷,以及輸出密碼強(qiáng)度等級(jí)相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
java實(shí)現(xiàn)cassandra高級(jí)操作之分頁(yè)實(shí)例(有項(xiàng)目具體需求)
這篇文章主要介紹了java實(shí)現(xiàn)cassandra高級(jí)操作之分頁(yè)實(shí)例(有項(xiàng)目具體需求),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04
簡(jiǎn)單易懂的MyBatis分庫(kù)分表方案分享
這篇文章主要給大家介紹了關(guān)于MyBatis分庫(kù)分表方案的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用MyBatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
細(xì)數(shù)java for循環(huán)中的那些坑
這篇文章主要介紹了Java for循環(huán)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
java fastJson轉(zhuǎn)JSON兩種常見(jiàn)的轉(zhuǎn)義操作
在實(shí)際開發(fā)中,我們有時(shí)需要將特殊字符進(jìn)行轉(zhuǎn)義,本文主要介紹了java fastJson轉(zhuǎn)JSON兩種常見(jiàn)的轉(zhuǎn)義操作,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
java獲取版本號(hào)及字節(jié)碼編譯版本方法示例
這篇文章主要給大家介紹了關(guān)于java獲得版本號(hào)及字節(jié)碼編譯版本的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10

