1. 程式人生 > 其它 >javaSE——流程控制

javaSE——流程控制

------------恢復內容開始------------

# 順序結構

JAVA的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行。

選擇結構

1、if單選擇結構

我們很多時候需要去判斷一個東西是否可行,然後我們才去執行,這樣一個過程在程式中用if語句來表示:

if(布林表示式){
	//如果布林表示式為true將執行的語句
}

意義:if語句對條件表示式進行一次測試,若測試為真,則執行下面的語句,否則跳過該語句。
【示例】

//package放在最前面
package com.kuang.struct;

import java.util.Scanner;


public class ifDemo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        //接收使用者輸入
        System.out.println("請輸入內容:");
        String s = scanner.nextLine();
        
        //假設條件為輸入的只要是Hello就輸出,如果是其他字串無操作
        if(s.equals("Hello")){
            System.out.println("輸入的是:"+s);
        }
        System.out.println("End");

        scanner.close();
    }
}

【equals方法是用來進行字串的比較的,之後會詳解,這裡大家只需要知道他是用來比較字串是否一致的即可!但和==是有區別的。】

2、if雙選擇結構

if(布林表示式){
	//如果布林表示式的值為true
}else{
	//如果布林表示式的值為false
}

意義:當條件表示式為真時,執行語句塊1,否則,執行語句塊2。也就是else部分。

【演示】我們來寫一個示例:考試分數大於60就是及格,小於60分就不及格

package com.kuang.struct;

import java.util.Scanner;

public class ifDemo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("請輸入成績:");
        int score = scanner.nextInt();
        
        if (score > 60) {
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }

        scanner.close();
    }
}

3、if多選擇結構

if(布林表示式 1){
//如果布林表示式 1的值為true執行程式碼
}else if(布林表示式 2){
//如果布林表示式 2的值為true執行程式碼
}else if(布林表示式 3){
//如果布林表示式 3的值為true執行程式碼
}else {
//如果以上布林表示式都不為true執行程式碼
}

使用 if,else if,else 語句的時候,需要注意下面幾點:

  • if 語句至多有 1 個 else 語句,else 語句在所有的 else if 語句之後。
  • if 語句可以有若干個 else if 語句,它們必須在 else 語句之前。
  • 一旦其中一個 else if 語句檢測為 true,其他的 else if 以及 else 語句都將跳過執行。

【演示】我們來改造一下上面的成績案例,學校根據分數區間分為ABCD四個等級!

package com.kuang.struct;

import java.util.Scanner;

public class ifDemo03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("請輸入成績:");
        //score接收鍵盤輸入的數字
        int score = scanner.nextInt();

        if (score == 100) {
            System.out.println("恭喜滿分!");
        } else if (score < 100 && score >= 90) {
            
            System.out.println("A級");
        } else if (score < 90 && score >= 80) {
            System.out.println("B級");
        } else if (score < 80 && score >= 70) {
            System.out.println("C級");
        } else if (score < 70 && score >= 60) {
            System.out.println("D級");
        } else if (score<60 && score >=0){
            System.out.println("不及格!");
        }else {
            System.out.println("成績輸入不合法!");
        }
            

        scanner.close();
    }
}

4、巢狀的if結構

if(布林表示式 1){
	////如果布林表示式 1的值為true執行程式碼
	if(布林表示式 2){
		////如果布林表示式 2的值為true執行程式碼
	}
}

【記住一點就好,所有的流程控制語句都可以互相巢狀,互不影響!】

5、switch多選擇結構

多選擇結構還有一個實現方式就是switch case 語句。
switch case 語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支。

switch(expression){
	case value :
		//語句
		break; //可選
	case value :
		//語句
		break; //可選
	//你可以有任意數量的case語句
	default : //可選
		//語句
}

switch case 語句有如下規則:

  • switch 語句中的變數型別可以是: byte、short、int 或者 char。從 Java SE 7 開始,switch 支援字串 String 型別了,同時 case 標籤必須為字串常量或字面量。
  • switch 語句可以擁有多個 case 語句。每個 case 後面跟一個要比較的值和冒號。
  • case 語句中的值的資料型別必須與變數的資料型別相同,而且只能是常量或者字面常量。
  • 當變數的值與 case 語句的值相等時,那麼 case 語句之後的語句開始執行,直到 break 語句出現才會跳出 switch 語句。
  • 當遇到 break 語句時,switch 語句終止。程式跳轉到 switch 語句後面的語句執行。case 語句不必須要包含 break 語句。如果沒有 break 語句出現,程式會繼續執行下一條 case 語句,直到出現break 語句。
  • switch 語句可以包含一個 default 分支,該分支一般是 switch 語句的最後一個分支(可以在任何位置,但建議在最後一個)。default 在沒有 case 語句的值和變數值相等的時候執行。default 分支不需要 break 語句。

switch case 執行時,一定會先進行匹配,匹配成功執行當前 case 中的語句,再根據是否有 break,判斷是否繼續執行,或是跳出switch。

public static void main(String args[]){
	//char grade = args[0].charAt(0);
	char grade = 'C';
	switch(grade)
	{
		case 'A' :
			System.out.println("優秀");
			break;
		case 'B' :
		case 'C' :
			System.out.println("良好");
			break;
		case 'D' :
			System.out.println("及格");
			break;
		case 'F' :
			System.out.println("你需要再努力努力");
			break;
		default :
			System.out.println("未知等級");
	}
	System.out.println("你的等級是 " + grade);
}

如果 case 語句塊中沒有 break 語句時,匹配成功後,從當前 case 開始,後續所有 case 的值都會輸出。如果後續的 case 語句塊有 break 語句則會跳出判斷。【case穿透】

public static void main(String args[]){
	int i = 1;
	switch(i){
		case 0:
			System.out.println("0");
		case 1:
			System.out.println("1");
		case 2:
			System.out.println("2");
		case 3:
			System.out.println("3");
			break;
		default:
			System.out.println("default");
	}
}

輸出:1,2,3。

【JDK7增加了字串表示式;當然字元的本質還是數字,switch把對字元的處理變成了對雜湊值的處理,這點通過反編譯就能得到】

【反編譯:把java原始碼編譯得到的class(位元組碼)檔案拖入idea中已經開啟的工程資料夾就可以看見反編譯後的原始碼】

public static void main(String[] args) {
	String name = "狂神";
	switch (name) { //JDK7的新特性,表示式結果可以是字串!!!
		case "秦疆":
			System.out.println("輸入的秦疆");
			break;
		case "狂神":
			System.out.println("輸入的狂神");
			break;
		default:
			System.out.println("弄啥嘞!");
	}
}
```<p>------------恢復內容結束------------</p>