[Java] 3.2. switch

如同開關一般,決定程式要從哪開始執行。

 

image/svg+xml3.2 條件控制 - switch break ,中斷吃宵夜的可能 switch ,安排⼀天的⽤餐⾏程 default ,預設⽤餐⾏程的選擇 switch 與資料型別 class MainClass { public static void main( String [] args){ int time = 7 ; switch ( time ){ case 7 : System.out.println( "7 點吃早餐 " ); case 12 : System.out.println( "12 點吃中餐 " ); case 18 : System.out.println( " 下午 6 點吃晚餐 " ); case 22 : System.out.println( " 下午 10 點吃宵夜 " ); } } } 執⾏結果 7 點吃早餐 12 點吃中餐 下午 6 點吃晚餐 下午 10 點吃宵夜 class MainClass { public static void main( String [] args){ int time = 18 ; switch ( time ){ case 7 : System.out.println( "7 點吃早餐 " ); case 12 : System.out.println( "12 點吃中餐 " ); case 18 : System.out.println( " 下午 6 點吃晚餐 " ); break ; case 22 : System.out.println( " 下午 10 點吃宵夜 " ); } } } 執⾏結果 下午 6 點吃晚餐 class MainClass { public static void main( String [] args){ int time = 1 ; switch ( time ){ case 7 : System.out.println( "7 點吃早餐 " ); case 12 : System.out.println( "12 點吃中餐 " ); case 18 : System.out.println( " 下午 6 點吃晚餐 " ); break ; case 22 : System.out.println( " 下午 10 點吃宵夜 " ); default : System.out.println( " 現在幾點了?!算了,隨便吃個東⻄也好 " ); } } } 執⾏結果 現在幾點了?!算了,隨便吃個東⻄也好 class MainClass { public static void main( String [] args){ int i = 1 ; switch ( i ){ case 1 : System.out.println(i); } char c = 'A' ; switch ( c ){ case 'A' : System.out.println( "A" ); } } } J3_2_1 - MainClass.java 5. Case 條件- “case 7:” 比對成功,因此從之後的 case 將不會在比對,且會執⾏之後每個 case 所包含的程式。 J3_2_2 - MainClass.java 1. 宣告⼀個 time 變數,⽤來存放⽬前的時間為幾點鐘。在此為 7 點。 2. switch 上的⼩括號( ( ) )將會放入這個 time 變數,以作為判斷程式進入點的依據。 3. 使⽤ case 來判斷⽬前的時間。 case 只能進⾏相等的運 算,也就是說當給予 7 這個數時, case 會比對 time 變數中的 數值是否為 7 ,若是的話則程式從這個起點開始執⾏。注意, 每個 case 都以冒號作結束,以完成 case 的陳述句。 4. 在這個範例中,因為⽬前的時間為 7 點,是在第⼀個 case-“case 7:” 就比對 成誤了,因此之後的 case 將會比起作⽤。不同於 if/else 的地⽅在於, switch 是使⽤ case 表⽰程式的進入點,⽽非 if/else 將程式分區塊執⾏的功能。 1. time 變數表⽰時間,在此設定為 18 點。 3. 18 點時(即下午 6 點)會吃晚餐。 2. 在此使⽤ switch 判斷 time 變數中存放的時間。 4. break 加在 18 點的後⾯,這樣在列出 下午6 點吃晚餐 的字樣後,就會跳離整個 switch 5. 這個 case 只有在時間為 22 點時才會執⾏。其他的 case 因為 break 的關 係,將不會往下執⾏到此⾏程式,如此即達到吃完晚餐即不吃宵夜的需求。 J3_2_3 - MainClass.java 1. 刻意在 time 變數中存入 1 ,表⽰ 1 點, 這與接下來 switch case 皆無法對應。 2. 使⽤ switch 判斷 time 變數中存放的時間。 3. 因上⽅的 case 皆無法成功與 1 比對成因,因此會執⾏此 default 選項,⽽ default 就是會在此時發⽣作⽤。這也讓⽤ 餐程式在無法判斷時間的情況下,有個預設執⾏的路徑。 正確的 switch ⽤餐程式,是必須先使⽤ if ,將時間分割並對應成早、中、 晚、宵夜成 4 個時段的區間值,在依此區間值透過 switch 進⾏⽤餐的選取, 如此就不會有因時間無法對應 case 中的數值,⽽造成不知⽤哪⼀餐的情況發 ⽣。 J3_2_4 - MainClass.java 1. 整數類的資料,可於 switch 中使⽤,以作為判斷 case 的值。 2. ⽽字元類的資料,也可在 switch 中使⽤,判斷 case 的值。 1 2 3 4 1 2 3 4 1 1 1 1

留言