1. 程式人生 > 實用技巧 >038 01 Android 零基礎入門 01 Java基礎語法 04 Java流程控制之選擇結構 05 案例演示switch結構-星期的表示案例以及總結

038 01 Android 零基礎入門 01 Java基礎語法 04 Java流程控制之選擇結構 05 案例演示switch結構-星期的表示案例以及總結

038 01 Android 零基礎入門 01 Java基礎語法 04 Java流程控制之選擇結構 05 案例演示switch結構-星期的表示案例以及總結

本文知識點:案例演示switch結構並對switch結構進行總結

案例演示switch結構

程式程式碼:
下圖中的程式碼沒有格式縮排,如何解決?

在eclipse的程式碼編輯區,右擊,source→format

程式碼就完成格式縮進了,看起來清爽很多

執行程式,會發現有問題:
發現輸入4,包括週四之後的所有語句都輸出了。

原因何在?
答案很簡單,沒有新增break語句。

那解決辦法也很簡單,在case4的輸出語句後新增上break,再測試,輸入4,此時發現,程式只輸出了週四,之後就結束了,再沒有輸出其他case4之後的語句。break的作用就在於此。

所以,我們該給每個case之後都新增上break語句。

public static void main(String[] args) {
	System.out.println("請輸入數字1-7,表示週一到周天");
	Scanner sc = new Scanner(System.in);
	int n = sc.nextInt();
	switch (n) {
	case 1:
		System.out.println("週一");
		break;
	case 2:
		System.out.println("週二");
		break;
	case 3:
		System.out.println("週三");
		break;
	case 4:
		System.out.println("週四");
		break;
	case 5:
		System.out.println("週五");
		break;
	case 6:
		System.out.println("週六");
		break;
	case 7:
		System.out.println("周天主日,分別為聖的日子,敬拜上帝");
		break;
	default:
		System.out.println("輸入的資料超出了1-7的範圍!");
	}
}

程式執行結果沒有問題。

如果輸入的不是整型會如何?

如果輸入的資料不是要求的整型(n初始化的時候是int型別),則產生輸入不匹配異常:InputMismatchException

改寫程式——不用整數匹配,而改用字串進行switch表示式與case常量的匹配

改寫程式的程式碼及其執行結果:

public static void main(String[] args) {
	System.out.println("請輸入表示星期的英文單詞,表示週一到周天");
	Scanner sc = new Scanner(System.in);
	String week = sc.next();
	switch (week) {
	case "MONDAY":
		System.out.println("週一");
		break;
	case "TUESDAY":
		System.out.println("週二");
		break;
	case "WEDNESDAY":
		System.out.println("週三");
		break;
	case "THURSDAY":
		System.out.println("週四");
		break;
	case "FRIDAY":
		System.out.println("週五");
		break;
	case "SATURDAY":
		System.out.println("週六");
		break;
	case "SUNDAY":
		System.out.println("周天主日,分別為聖的日子,敬拜上帝");
		break;
	default:
		System.out.println("單詞輸入錯誤!");
	}
}

注意:字串型別的匹配注意要區分大小寫

單詞全部大寫輸入正確無誤後,程式執行結果無誤。

如何隨便輸入,都能保證是大寫?
新增一行程式碼:

week = week.toUpperCase();  //把字串中的字元全部改為大寫

新增這行程式碼後,執行程式,發現即使輸入小寫,也完全沒有問題

插一句,改為大寫字母的程式碼為什麼可以這樣寫?

String week = sc.next();
week = week.toUpperCase();  //把字串中的字元全部改為大寫

因為String 本身是類,week是類物件,物件通過物件名.方法名的形式呼叫方法。

這一點,目前不必深究,後面學到面向物件會詳細講解。