1. 程式人生 > >switch 多分支語句,及其流程圖,和if的對比和執行機制

switch 多分支語句,及其流程圖,和if的對比和執行機制

switch : 在程式設計中常見的問題就是檢測一個變數是否符合某個條件,如果條件不符合,再用另一個值來檢測,以此類推.當然也可以用if語句來完成也可以,如輸入月份判斷一年的季節,程式碼如下:
public static void main(String[] args) {
    System.out.println("請輸入一個月份:");
    Scanner scanner = new Scanner(System.in);
    int luna = scanner.nextInt();
    if(luna==3||luna==4||luna==5){
        System.out.println("春季");
    }
    if(luna==6||luna==7||luna==8){
        System.out.println("夏季");
    }
    if(luna==9||luna==10||luna==11){
        System.out.println("秋季");
    }
    if(luna==12||luna==1||luna==2){
        System.out.println("冬季");
    }
}
這個程式顯得比較笨重,而且要是我要對單一月份進行特殊的輸出的時候,就會改掉一塊if語句,像這種要實現"多選一"的情況就應該用switch語句來進行判斷,程式碼如下:
public static void main(String[] args) {
    System.out.println("請輸入一個月份:");
    Scanner scanner = new Scanner(System.in);
    int luna = scanner.nextInt();
   switch(luna){
       case 3 :
       case 4 :
       case 5 :
           System.out.println("春季");
           break;
       case 6 :
           System.out.println("春季的開頭");
       case 7 :
       case 8 :
           System.out.println("夏季");
           break;
       case 9 :
       case 10 :
       case 11 :
           System.out.println("秋季");
           break;
       case 12 :
       case 1 :
       case 2 :
           System.out.println("冬季");
           break;
           default:
               System.out.println("輸入的月份不符合規則!");
}
}
如此,我要對三月進行一個特殊的輸出,我只要在它,對應的 case 後面加上我的改動就可以了,這裡注意 break 的用法! 在switch 結構中不是每一個 case後面都要跟break 的,這裡我先來說一說 switch的執行機制: 將整個switch結構看成是一個博物館 我們的現在手上的 Luna 這個變數就是我們的門票,我們要通過門票進入我們我們對應的房間,然後一間一間的去遊覽我們的展廳,break 相當於展覽館的保安,你碰到保安代表後面的門票你並沒有購買,然後你就要被保安請出去了,要是你的門票並沒有找到對應的展館,你就會進入一個 特殊的展館 default ; 如圖
注意,switch 語句的中表達式的的值必須是整形,字元型,字串型,或常量型 1 ~ n 必須也是整形,字元型或字串型. default 語句為可選的,如果它不存在,且 switch 語句中表達式的值不予任何 case 的常量值相同,switch 則不做任何處理!switch 的 流程圖:

                                              

作者:唐平

時間:2018.4.19