iT邦幫忙

DAY 6
4

實戰 Java SE 7 系列 第 6

Project Coin - switch 語法支援字串變數 (Stings in switch)

在 Java SE 7 版之前,switch 只能接受數字型別的 case 判斷,可是我們常常會需要做字串的判斷,只好用一堆的 if-else 來處理,現在 Java SE 7 裡 switch 終於支援字串了!
舉個例子,例如你的程式需要讓使用者輸入一種水果的名字,然後顯示出來它是什麼顏色,蘋果是紅色,草莓也是紅色,香蕉是黃色,芭樂是綠色,而葡萄是紫色。傳統的程式碼會像這樣子

package idv.jacky.ironman4.day6;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Day6Example1 {

	public static void main(String[] args) {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        
        String fruit = "";
        String color = "";
        while (true) {
            System.out.print("請輸入一種水果(蘋果, 草莓, 香蕉, 芭樂, 葡萄) > ");
            try {
                fruit = in.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            if (fruit.equals("蘋果"))
            	color = "紅色";
            else if (fruit.equals("草莓"))
            	color = "紅色";
            else if (fruit.equals("香蕉"))
            	color = "黃色";
            else if (fruit.equals("芭樂"))
            	color = "綠色";
            else if (fruit.equals("葡萄"))
            	color = "紫色";
            else
            	continue;
            
            if (!fruit.equals("") && !color.equals(""))
            	System.out.printf("%s 的顏色是 %s%n", fruit, color);
            
            fruit = "";
            color = "";
        }
	}

}

我們使用 BufferedReader 來從命令列上讀取使用者所輸入的字串(第10行是宣告,第17行是讀取),我們有個無限的迴圈(第14到40行),來讓使用者不斷地可以輸入不同的字,然後程式的第22到第31就是一堆的 if-else ,用來判斷輸入的字串是哪種水果,如果都不在我們預設的範圍內,就直接要使用者重新輸入(第33行)。最後,第36行就是把水果的顏色印出來。執行結果如下:

而在 Java SE 7裡,你可以把原來的 if-else 改成用 switch 的法

package idv.jacky.ironman4.day6;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Day6Example2 {

	public static void main(String[] args) {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        
        String fruit = "";
        String color = "";
        while (true) {
            System.out.print("請輸入一種水果(蘋果, 草莓, 香蕉, 芭樂, 葡萄) > ");
            try {
                fruit = in.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            switch (fruit) {
            case "蘋果":
            case "草莓":
            	color = "紅色";
            	break;
            case "香蕉":
            	color = "黃色";
            	break;
            case "芭樂":
            	color = "綠色";
            	break;
            case "葡萄":
            	color = "紫色";
            	break;
            default:
            	continue;
            }

            if (!fruit.equals("") && !color.equals(""))
            	System.out.printf("%s 的顏色是 %s%n", fruit, color);
            
            fruit = "";
            color = "";
        }
	}

}

執行的結果當然一樣,不過程式碼是不是更簡潔清楚了呢?!


上一篇
Project Coin - 小而精實的錢幣專案
下一篇
Project Coin - switch 語法支援字串變數 (Stings in switch) 續
系列文
實戰 Java SE 7 31

1 則留言

0
chiounan
iT邦研究生 1 級 ‧ 2011-10-19 09:40:01

筆記期待您的下一篇分享

jackychu iT邦新手 3 級 ‧ 2011-10-19 22:08:17 檢舉

謝謝支持~

我要留言

立即登入留言