黑馬程序員_流程控制語句

          ------- android培訓java培訓、期待與您交流! ----------

在程序執行的過程中,有時候我們需要根據不同的結果來執行不同的代碼,或者是同樣的代碼我想執行多次,如果按照普通的做法來寫程序的話,會使得代碼的重複性太高,這時候就需要使用到流程控制語句,在java中,java提供了以下幾種流程控制語句。

一、順序結構

      順序結構就是一條一條代碼往下執行。這個就不多說了。

二、選擇結構

      選擇結構是根據不同的結果來執行不同的代碼,在java中使用if語句來進行這樣的操作

           格式1:
                if(比較表達式) {
                     語句體;
                }
            
            執行流程:
                判斷比較表達式的值,看是true還是false
                如果是true,就執行語句體
                如果是false,就不執行語句體

           格式2:
            if(比較表達式) {
                語句體1;
            }else {
                語句體2;
            }
            
            執行流程:
                判斷比較表達式的值,看是true還是false
                如果是true,就執行語句體1
                如果是false,就執行語句體2
                
        格式3:
            if(比較表達式1) {
                語句體1;
            }else if(比較表達式2){
                語句體2;
            }
            ...
            else {
                語句體n+1;
            }
            
            執行流程:
                判斷比較表達式1的值,看是true還是false
                如果是true,就執行語句體1
                如果是false,就繼續判斷比較表達式2的值,看是true還是false
                如果是true,就執行語句體2
                如果是false,就繼續判斷比較表達式3的值,看是true還是false
                ...
                如果都不滿足,就執行語句體n+1
    (2)注意事項
        A:比較表達式無論簡單還是複雜,結果是boolean類型
        B:if語句控制的語句體如果是一條語句,是可以省略大括號的;如果是多條,不能省略。
            建議:永遠不要省略。
        C:一般來說,有左大括號,就沒有分號,有分號,就沒有左大括號。
        D:else後面如果沒有if,是不會出現比較表達式的。
        E:三種if語句其實都是一個語句,只要有一個執行,其他的就不再執行。

       代碼演示:

 

package day03;

import java.util.Scanner;

public class Operator04 {

	public static void main(String[] args) {
		int a = 5;
		int b = 10;
		//比較兩個數是否相等
		if(a == b){
			System.out.println("5和10相等");
		}
		//獲取兩個數的最大值

		if(a > b){
			int max = a;
			System.out.println("max="+max);
		}else{
			int max = b;
			System.out.println("max="+max);
		}
		//根據成績判斷等級
		Scanner sc = new Scanner(System.in);  //用於用戶鍵盤輸入的
		int score = sc.nextInt(); 
		if(score >= 90 && score < 101){
			System.out.println("A");
		}else if(score >= 75 && score < 90){
			System.out.println("B");
		}else if(score >= 60 && score < 75){
			System.out.println("C");
		}else if(score >= 0 && score < 60){
			System.out.println("D");
		}else{
			System.out.println("數據輸入錯誤");
		}
		
		
	}

}

選擇語句還有另外一種,就是switch

switch語句的格式:

switch(表達式) {
            case 值1:
                語句體1;
                break;
            case 值2:
                語句體2;
                break;
            ...
            default:
                語句體n+1;
                break;
        }
        
        格式解釋說明:
            switch:說明這是switch語句。
            表達式:可以是byte,short,int,char
                JDK5以後可以是枚舉
                JDK7以後可以是字符串
            case:後面的值就是要和表達式進行比較的值
            break:表示程序到這裏中斷,跳出switch語句
            default:如果所有的情況都不匹配,就執行這裏,相當於if語句中的else
    (2)面試題
        switch語句的表達式可以是byte嗎?可以是long嗎?可以是String嗎?
            可以,不可以,JDK7以後可以
    (3)執行流程:
        A:首先計算表達式的值
        B:和每一個case進行匹配,如果有就執行對應的語句體,看到break就結束。
        C:如果沒有匹配,就執行default的語句體n+1。
    (4)注意事項:
        A:case後面只能是常量,不能是變量,而且,多個case後面的值不能出現相同的
        B:default可以省略嗎?
            可以省略,但是不建議,因爲它的作用是對不正確的情況給出提示。
            特殊情況:
                case就可以把值固定。
                A,B,C,D
        C:break可以省略嗎?
            可以省略,但是結果可能不是我們想要的。
            會出現一個現象:case穿透。
            最終我們建議不要省略
        D:default一定要在最後嗎?
            不是,可以在任意位置。但是建議在最後。
        E:switch語句的結束條件
            a:遇到break就結束了
            b:執行到末尾就結束了

代碼演示:

import java.util.Scanner;
//根據鍵盤錄入的數字輸出對應的星期幾
class SwitchDemo2 {
	public static void main(String[] args) {
		//創建鍵盤錄入對象
		Scanner sc = new Scanner(System.in);
		
		//控制鍵盤錄入數據
		System.out.println("請輸入一個數據(1-7):");
		int week = sc.nextInt(); //3
		
		switch(week) {
			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("你輸入的數據有誤");
				//break;
		}
	}
}

三、循環結構

java中的循環結構有三種,分別是for、while、do...while

1、for語句

      格式:
            for(初始化語句;判斷條件語句;控制條件語句){
                循環體語句;
            }
            
            執行流程:
                a:執行初始化語句
                b:執行判斷條件語句
                    如果這裏是true,就繼續
                    如果這裏是false,循環就結束
                c:執行循環體語句
                d:執行控制條件語句
                e:回到b

class ForDemo3 {
	public static void main(String[] args) {
		//原始做法
		System.out.println(1+2+3+4+5+6+7+8+9+10);
		
		//定義第一個加數
		int sum = 0;
		
		for(int x=1; x<=10; x++) {
			//這裏的x其實是第二個加數
			sum = sum + x;
			/*
				0 + 1 = 1
						1 + 2 = 3
								3 + 3 = 6
								...
			*/
			
			//sum += x;
		}
		
		System.out.println("sum:"+sum);
	}
}

2、while語句

      格式:
            while(判斷條件語句) {
                循環體語句;
            }

/*
	我國最高山峯是珠穆朗瑪峯:8848m,我現在有一張足夠大的紙張,厚度爲:0.01m。
	請問,我摺疊多少次,就可以保證厚度不低於珠穆朗瑪峯的高度?

	分析:
		A:定義一個統計變量,默認值是0
		B:最高山峯是珠穆朗瑪峯:8848m這是最終的厚度
		  我現在有一張足夠大的紙張,厚度爲:0.01m這是初始厚度
		C:我摺疊多少次,就可以保證厚度不低於珠穆朗瑪峯的高度?
		  摺疊一次有什麼變化呢?就是厚度是以前的2倍。
		D:只要每次變化的厚度沒有超過珠穆朗瑪峯的高度,就摺疊,統計變量++
		E:輸出統計變量。
*/

class WhileDemo5 {
	public static void main(String[] args) {
		//定義一個統計變量,默認值是0
		int count = 0;
		
		//最高山峯是珠穆朗瑪峯:8848m這是最終的厚度
		//我現在有一張足夠大的紙張,厚度爲:0.01m這是初始厚度
		//爲了簡單,我把0.01變成1,同理8848就變成了884800
		int end = 884800;
		int start = 1;
		
		while(start<end) {
			//只要每次變化的厚度沒有超過珠穆朗瑪峯的高度,就摺疊,統計變量++
			count++;
			
			//摺疊一次有什麼變化呢?就是厚度是以前的2倍。
			start *= 2;
			
			System.out.println("第"+count+"次厚度是"+start);
		}
		
		//輸出統計變量。
		System.out.println("要疊"+count+"次");
	}
}


3、do...while語句

      格式:  
            do {
                循環體語句;
            }while(判斷條件語句);

代碼演示:

class DoWhileDemo {
	public static void main(String[] args) {
		//輸出10次HelloWorld。
		int x = 0;
		do {
			System.out.println("HelloWorld");
			x++;
		}while(x<10);
		
		System.out.println("--------------");
		
		//求和1-100
		int sum = 0;
		int a = 1;
		do {
			sum += a;
			a++;
		}while(a<=100);
		
		System.out.println(sum);
	}
}


do...while和while的區別

while只有當條件符合時,纔會執行其中的代碼塊

do..while會執行一次其中的代碼塊再進行判斷

4、中斷語句

break:跳出當前循環

continue:結束當前循環,進入下一次循環

return:多用於方法的返回,一旦執行return語句,程序不再往下執行


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章