java基礎之 switch

來源:互聯網
上載者:User

標籤:

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 :

     ...

 

}

java基礎之 switch

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.