1. 程式人生 > >Java中的Switch用法

Java中的Switch用法

1,在java中switch後的表示式的型別只能為以下幾種:byte、short、char、int(在Java1.6中是這樣),   在java1.7後支援了對string的判斷 

public class TestSwitch{
    public static void main(String args[]){
        char c = 'a';        //char型別字元
        switch(c){
            default:
                System.out.println("列印預設值");
                
break; 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; } } }

2,在java中如果switch的case語句中少寫了break;這個關鍵字,在編譯的時候並沒有報錯,但是在執行的時候會一直執行所有case條件下的語句並不是去判斷,所以會一直執行直到遇到break關鍵字跳出

  1. package sampleTest;  
  2. publicclass TestSwitch {  
  3.     publicstaticvoid main(String[] args) {  
  4.         int count = 0;  
  5.         switch
     (count) {  
  6.         case0:  
  7.             System.out.println("case0");  
  8.         case1:  
  9.             System.out.println("case1");  
  10.         case2:  
  11.             System.out.println("case2");  
  12.             break;  
  13.         case3:  
  14.             System.out.println("case3");  
  15.         default:  
  16.             System.out.println("default!");  
  17.         }  
  18.         System.out.println("-------------------");  
  19.         String msg = "dragon";  
  20.         switch (msg) {  
  21.         case"rabbit":  
  22.             System.out.println("rabbit ");  
  23.         case"dragon":  
  24.             System.out.println("happy new year");  
  25.         default:  
  26.             System.out.println("what ?");  
  27.         case"monkey":  
  28.             System.out.println("monkey");  
  29.             break;  
  30.         case"tiger":  
  31.             System.out.println("tiger!!");  
  32.         }  
  33.     }  
  34. }  

輸出如下:
case0
case1
case2
-------------------
happy new year
what ?
monkey

上面例子說明了兩個問題,第一個是不加break的後果,第二個是default的位置對執行的影響

3,多個case輸出相同,可以只寫一個case,如下面這個輸出月份的天數的經典問題

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. namespace A_Month_Has_Days_Modified  
  6. {  
  7.     class Program  
  8.     {  
  9.         staticvoid Main(string[] args)  
  10.         {  
  11.             Console.WriteLine("請輸入你要查詢的年份");  
  12.             int year = Convert.ToInt32(Console.ReadLine());  
  13.             Console.WriteLine("請輸入你要查詢的月份");  
  14.             int month = Convert.ToInt32(Console.ReadLine());  
  15.             int bigDay = 31, smallDay = 30, leapDay = 29, nonleapDay = 28;  
  16.             bool isLeapYear;  
  17.             if ((year % 400 == 0) || ((year % 4 != 0) && (year % 100 == 0)))  
  18.             {  
  19.                 isLeapYear = true;  
  20.             }  
  21.             else
  22.             {  
  23.                 isLeapYear = false;  
  24.             }  
  25.             switch (month)  
  26.             {  
  27.                 case 1:  
  28.                 case 3:  
  29.                 case 5:  
  30.                 case 7:  
  31.                 case 8:  
  32.                 case 10:  
  33.                 case 12:  
  34.                     Console.WriteLine("{0}年{1}月共有{2}天", year, month, bigDay);  
  35.                     break;  
  36.                 case 4:  
  37.                 case 6:  
  38.                 case 9:  
  39.                 case 11:  
  40.                     Console.WriteLine("{0}年{1}月共有{2}天", year, month, smallDay);  
  41.                     break;  
  42.                 case 2:  
  43.                     if (isLeapYear == true)  
  44.                     {  
  45.                         Console.WriteLine("{0}年{1}月共有{2}天", year, month, leapDay);  
  46.                     }  
  47.                     else
  48.                     {  
  49.                         Console.WriteLine("{0}年{1}月共有{2}天", year, month, nonleapDay);  
  50.                     }  
  51.                     break;                 
  52.                 default:  
  53.                     Console.WriteLine("您輸入的年份或月份格式不正確,年份為四位數字,月份為1至12");  
  54.                     break;  
  55.             }  
  56.             Console.ReadKey();  
  57.         }  
  58.     }  
  59. }