Java中的switch控制陳述句
關于switch陳述句:
1、witch陳述句也屬于選擇結構,也是分支陳述句
2、switch陳述句的語法結構:
一個比較完整的switch陳述句應該這樣撰寫
switch (int或String型別的字面值或變數){
case int或String型別的字面值或變數:
java陳述句;
java陳述句;
...
break;
case int或String型別的字面值或變數:
java陳述句;
java陳述句;
...
break;
case int或String型別的字面值或變數:
java陳述句;
java陳述句;
...
break;
default:
java陳述句;
...
}
3、switch陳述句的執行原理:
switch陳述句后面小括號當中的“資料”進行一一匹配,匹配成功的分支執行按照自上而下的順序依次匹配,
4、匹配成功的分支執行,分支當中最后有“break;”陳述句的話,整個switch陳述句終止,
5、匹配成功的分支執行,分支當中沒有“break;”陳述句的話,直接進入下一個分支執行(不進行匹配),這種現象被稱為 case穿透 現象,【提供break;陳述句可以避免穿透】
case穿透:
int i=10;
switch(i){
case 1:
java陳述句;
case 2:
java陳述句;
case 3:
java陳述句;
break;//輸入1,輸出的結果是前三條java陳述句
case 4:
java陳述句;
System.out.println("Test Code!");
break;
}
6、所有分支都沒有匹配成功,當有default的陳述句的話,會執行default分支當中的程式
7、switch后面和case后面只能是int或者String型別的資料,不能是探測其他型別,
- 當然byte,short,char也可以直接寫到switch和case后面,因為它們可以進行自動型別轉換,byte,short,char可以自動轉換成int型別,
- JDK6的,switch和case后面只能探測int型別,
- JDK7之后包括7版本在內,引入新特性,switch關鍵字和case關鍵字后面可以探測 int 和string型別的資料,
8、case可以合并:
int i=10;
switch(i){
case 1:case 2:case 3: //輸入1、2、3輸出的結果相同
java陳述句;
break;
case 4:
java陳述句;
System.out.println("Test Code!");
break;
}
10、switch陳述句例子
public class SwitchTest01
{
public static void main(String[] args){
long a = 10L;
int b = a; //編譯錯誤
long x = 10L;
switch(x){} //編譯報錯,switch陳述句不能用long
解決編譯錯誤:
long x = 10L;
switch((int)x){}
byte b = 10;
switch(b){} //編譯通過
short s = 10;
switch(s){} //編譯通過
char c = 'A';
switch(c){} //編譯通過
char cc = 12;
switch(cc){} //編譯通過
//編譯報錯
//switch(ture){}
String username = "zhangsan";
switch(username){}
}
}
11、switch確實可以探測String型別,這是Java7的新特性,
簡單計算器系統實作:
public class SwitchTest02()
{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.println("歡迎使用簡單計算器系統:");
System.out.print("請輸入第一個數字:");
int num1 = s.nextInt();
System.out.print("請輸入運算子");
String operator = s.next();
System.out.print("請輸入第二個數字:");
int num2 = s.nextInt();
int result = 0;
switch(operator){
case "+" :
result = sum1 + sum2;
break;
case "-" :
result = sum1 - sum2;
break;
case "*" :
result = sum1 * sum2;
break;
case "/" :
result = sum1 / sum2;
break;
case "%" :
result = sum1 % sum2;
break;
default :
System.out.println("輸入運算子號錯誤");
}
System.out.println("運算結果為:"+ num1 + operator + num2 + "=" + result );
}
}
假設系統給定考生成績,判斷該考生的成績等級:
- 有效成績范圍:【0-100】
- 考試成績可以有小數
- 考試成績和等級之間的對照關系:
【90-100】 A
【80-90】 B
【70-80】 C
【60-70】 D
【0-60】 E- 以上需求必須采用switch陳述句完成,不能采用if
竅門:(int)(成績 / 10)
public class SwitchTest03()
{
public static void main(String[] args){
double score = 數字:
int grade = (int)(score/10);
switch(grade){
case 9:case 10:
System.out.println("A");
break;
case 8:
System.out.println("B");
case 7:
System.out.println("C");
case 6:
System.out.println("D");
default:
System.out.println("E");
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/248994.html
標籤:其他
上一篇:常用圖片格式必須了解
下一篇:QPSK信號調制之ASCII碼
