switch-case分支結構總結


1,格式

switch(表達式){

case 常量1:執行語句1;

case 常量1:執行語句1;

... ...

case 常量n:執行語句n;

default:執行語句;}

2,說明:

  • 根據switch表達式中的值,依次匹配各個case中的常量。一旦匹配成功,則進入相應case結構中,調用其執行語句。當調用完執行語句以后,則仍然繼續向下執行其他case結構中的執行語句,直到遇到break關鍵字或此switch-case結構的末尾處;
  • break,可以使用在switch-case結構中,表示一旦執行到此關鍵字,就跳出switch-case結構;
  • switch結構中的表達式,只能是如下的6種類型之一:byte short char int 枚舉類型(JDK 5.0新增),string類型(jdk7.0新增)
  • case之后只能聲明常量,禁止寫范圍 
  • break關鍵字是可選的
  • default相當於IF-ELSE結構中的 else;default結構是可選的;位置是可選的,但一般寫最后;

3.練習

 練習一:使用switch把小寫類型的char轉換為大寫,只轉換啊a,b,c,d,e,其他的輸出為other;

 1 import java.util.Scanner;
 2 
 3 public class SwitchTest1 {
 4     public static void main (String args[]) {
 5         System.out.println("請輸入一個字符:");
 6         Scanner scan=new Scanner(System.in); 7 String intput = scan.next(); 8 char c=intput.charAt(0);  9         switch(c){
10         case('a'):
11             System.out.println('A');
12             break;
13         case('b'):
14             System.out.println('B');
15             break;
16         case('c'):
17             System.out.println('C');
18             break;
19         case('d'):
20             System.out.println('D');
21             break;
22         case('e'):
23             System.out.println('E');
24             break;
25         default:System.out.println("other");
26         
27         }
28         
29     }
30     

運行結果:

練習二:對學生成績大於60分的,輸出合格,低於60分的,輸出不合格;

 1 import java.util.Scanner;
 2 
 3 public class switchTest2 {
 4     public static void main(String args[]) {
 5         System.out.println("請輸入你的成績:");
 6         Scanner grade=new Scanner(System.in);
 7         int grade1=grade.nextInt();
 8         switch(grade1/60) {
 9         case(0):
10             System.out.println("不合格");
11         break;
12         case(1):
13             System.out.println("合格");
14         break;
15         }
16     }
17 
18 }

運行結果:

切記switch變量不能使用范圍,而當情況種數較多時,一一列出顯然不必,switch結構具有多個case可以合並的性質。

一開始想到的是將變量寫為grade1/10,case0-5輸出為不合格,case6-10輸出為合格;如圖所示:

但顯然沒有除以60高效,所以做出修改;

練習三:從鍵盤分別輸入年月日,判斷這一天是當年的第幾天?

注:判斷一年是不是閏年的標准:①可以被4整除,但不能被100整除;或②可以被400整除;

 1 import java.util.Scanner;
 2 
 3 /*
 4  從鍵盤分別輸入年月日,判斷這一天是當年的第幾天?
 5 
 6 注:判斷一年是不是閏年的標准:①可以被4整除,但不能被100整除;或②可以被400整除;
 7  */
 8 public class SwitchExer {
 9 public static void main(String args[]) {
10     Scanner scan=new Scanner(System.in);
11     System.out.println("請輸入年份:");
12     int year=scan.nextInt();
13     System.out.println("請輸入月份:");
14     int month=scan.nextInt();
15     System.out.println("請輸入天數:");
16     int day=scan.nextInt();
17     int sumdays=0;
18     switch(month) {
19     case 12:
20         sumdays +=30;
21     case 11:
22         sumdays +=31;
23     case 10:
24         sumdays +=30;
25     case 9:
26         sumdays +=31;
27     case 8:
28         sumdays +=31;
29     case 7:
30         sumdays +=30;
31     case 6:
32         sumdays +=31;
33     case 5:
34         sumdays +=30;
35     case 4:
36         sumdays +=31;
37     case 3://判斷是不是閏年
38         if((year%4==0 && year%100!=0) || year%400==0) {
39             sumdays +=29;
40         }else sumdays+=28;
41     case 2:
42         sumdays +=31;
43     case 1:
44         sumdays += day;
45     default:System.out.println("輸入有誤,請重新輸入:");
46     }
47     System.out.println(year+"年"+month+"月"+day+"日是當年的第"+sumdays+"天");
48 }
49 }

運行結果:

4,兩個分支結構的使用選擇策略

凡是可以使用switch—case 都可以使用If-else,反之,不成立;

如果兩者都可以使用(switch中表達式的取值情況不太多時),優先選擇switch-case結構;原因:switch-case執行效率稍高;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM