day03_流程控制語句

流程控制

概述

在一個程序執行的過程當中,各條語句的執行順序對程序的結果是有直接影響的。也就是說,程序的流程對運行結果有直接的影響。因此,咱們必須清楚每條語句的執行流程。並且,不少時候咱們要經過控制語句的執行順序來實現咱們要完成的功能。

順序結構

根據編寫的順序,從上到下,依次執行。數組

代碼演示oop

// 順序結構
public class Demo01Sequence {
    public static void main(String[] args) {
        //順序執行,根據編寫的順序,從上到下運行
        System.out.println("牀前明月光");
        System.out.println("疑是地上霜");
        System.out.println("舉頭望明月");
        System.out.println("低頭思故鄉");
    }
}

判斷語句

if語句第一種形式: ifspa

格式:3d

執行流程
  • 首先判斷關係表達式看其結果是true仍是false
  • 若是是true就執行語句體
  • 若是是false就不執行語句體

執行流程圖code

代碼演示單if語句的使用blog

public class DemoIf {
    //判斷2個變量是否相等
    public static void main(String[] args) {
        // 定義兩個變量
        int a = 10;
        int b = 20;
        //a == b 是關係表達式
        if (a == b) {
            //語句體
            System.out.println("a等於b");
        }
        int c = 10;
        //a == c 是關係表達式
        if (a == c) {
            //語句體
            System.out.println("a等於c");//a等於c
        }
        System.out.println("其餘代碼");//其餘代碼

    }
}
  • if語句第二種形式: if...else
格式:
執行流程
  • 首先判斷關係表達式看其結果是true仍是false
  • 若是是true就執行語句體1
  • 若是是false就執行語句體2

執行流程圖開發

代碼演示if.. else語句的使用字符串

// 標準的if-else語句, 判斷給定的數據是奇數仍是偶數
public class Demo03IfElse {
    public static void main(String[] args) {
        int num = 666;
        // 若是除以2可以餘數爲0,說明是偶數
        if (num % 2 == 0) {
            //語句體1
            System.out.println("偶數");//偶數
        } else {
            //語句體2
            System.out.println("奇數");
        }
        System.out.println("其餘代碼");//其餘代碼
    }
}
  • if語句第三種形式: if...else if ...else 
格式:
執行流程
  • 首先判斷關係表達式1看其結果是true仍是false
  • 若是是true就執行語句體1
  • 若是是false就繼續判斷關係表達式2看其結果是true仍是false
  • 若是是true就執行語句體2
  • 若是是false就繼續判斷關係表達式…看其結果是true仍是false
  • 若是沒有任何關係表達式爲true,就執行語句體n+1。

執行流程圖it

代碼演示其基本使用for循環

/*
指定考試成績,判斷學生等級
90-100 優秀
80-89 好70-79 良
60-69 及格
60如下 不及格

 */
public class Demo05IfElsePractise {
    public static void main(String[] args) {
        int score = 120;
        if (score >= 90 && score <= 100) {
            System.out.println("優秀");
        } else if (score >= 80 && score < 90) {
            System.out.println("好");
        } else if (score >= 70 && score < 80) {
            System.out.println("良");
        } else if (score >= 60 && score < 70) {
            System.out.println("及格");
        } else if (score >= 0 && score < 60) {
            System.out.println("不及格");
        } else { // 單獨處理邊界以外的不合理狀況
            System.out.println("數據錯誤");//數據錯誤
        }
    }
}

if語句和三元運算符的互換

在某些簡單的應用中,if語句是能夠和三元運算符互換使用的。 
// 題目:使用三元運算符和標準的if-else語句分別實現:取兩個數字當中的最大值
public class Demo06Max {
    public static void main(String[] args) {
        int a = 105;
        int b = 20;

        /*
        首先使用三元運算符
        int max = a > b ? a : b;
         */
        // 使用今天的if語句
        int max;
        if (a > b) {
            max = a;
        } else {
            max = b;
        }

        System.out.println("最大值:" + max);//最大值:105

    }
}

選擇語句 

選擇語句switch 

格式: 

執行流程
  • 首先計算出表達式的值
  • 其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程當中,遇到break就會結束。
  • 最後,若是全部的case都和表達式的值不匹配,就會執行default語句體部分,而後程序結束掉。 

執行流程圖

代碼演示,基本使用

public class Demo07Switch {
    public static void main(String[] args) {
        //定義變量,判斷是星期幾
        int weekday = 1;
        //switch語句實現選擇
        switch (weekday) {
            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; // 最後一個break語句能夠省略,可是強烈推薦不要省略
        }
    }
}

switch語句使用的注意事項:

  • 多個case後面的數值不能夠重複。
  • switch後面小括號當中只能是下列數據類型:基本數據類型:byte/short/char/int 引用數據類型:String字符串、enum枚舉
  •  switch語句格式能夠很靈活:先後順序能夠顛倒,並且break語句還能夠省略。「匹配哪個case就從哪個位置向下執行,直到遇到了break或者總體結束爲止。」case的穿透性 :在switch語句中,若是case的後面不寫break,將出現穿透現象,也就是不會在判斷下一個case的值,直接向後運行,直到遇到break,或者總體switch結束。 

循環語句

循環概述

循環語句能夠在知足循環條件的狀況下,反覆執行某一段代碼,這段被重複執行的代碼被稱爲循環體語句,當反覆執行這個循環體時,須要在合適的時候把循環判斷條件修改成false,從而結束循環,不然循環將一直執行下去,造成死循環。

循環語句for

格式:

執行流程
  • 執行順序:①②③④>②③④>②③④…②不知足爲止。
  • ①負責完成循環變量初始化,在循環開始最初執行,並且只作惟一一次。
  • ②負責判斷是否知足循環條件,不知足則跳出循環
  • ③具體執行的語句
  • ④循環後,循環條件所涉及變量的變化狀況 ,每次循環以後都要進行的掃尾工做,每次循環結束以後都要執行一次。

 執行流程圖

代碼演示,基本使用

//循環練習:使用for循環,計算1-100之間的偶數和
public class DemoFor {
    public static void main(String[] args) {
        //1.定義一個初始化變量,記錄累加求和,初始值爲0
        int sum = 0;
        //2.利用for循環獲取1‐100之間的數字
        for (int i = 1; i <= 100; i++) {
            //3.判斷獲取的數組是奇數仍是偶數
            if (i % 2 == 0) {
                //4.若是是偶數就累加求和
                sum += i;
            }
        }
        //5.循環結束以後,打印累加結果
        System.out.println("sum:" + sum);//sum:2550
    }
}

while循環

格式

執行流程
  • 執行順序:①②③④>②③④>②③④…②不知足爲止。
  • ①負責完成循環變量初始化。
  • ②負責判斷是否知足循環條件,不知足則跳出循環。
  • ③具體執行的語句。
  • ④循環後,循環變量的變化狀況。

執行流程圖

代碼演示,基本使用

//循環練習:使用while循環,計算1-100之間的偶數和
public class DemoWhile {
    public static void main(String[] args) {
        //定義一個初始化變量,記錄累加求和,初始值爲0
        int sum = 0;
        //定義初始化表達式
        int i = 1;
        //使用while循環讓初始化表達式的值變化
        while (i < 101) {
            if (i % 2 == 0) {
                //累加求和
                sum += i;
            }
            //步進表達式改變變量的值
            i++;
        }
        //打印求和的變量
        System.out.println("1‐100的偶數和是:" + sum);//1‐100的偶數和是:2550
    }
}

do...while循環

格式 
執行流程
  • 執行順序:①③④>②③④>②③④…②不知足爲止。
  • ①負責完成循環變量初始化。
  • ②負責判斷是否知足循環條件,不知足則跳出循環。
  • ③具體執行的語句
  • ④循環後,循環變量的變化狀況 

執行流程圖

 代碼演示,基本使用

/*
do-while循環的標準格式:

do {
    循環體
} while (條件判斷);

擴展格式:

初始化語句
do {
    循環體
    步進語句
} while (條件判斷);
*/
//循環練習:使用do..while循環,計算1-100之間的偶數和
public class Demo11DoWhile {
    public static void main(String[] args) {
        //定義一個初始化變量,記錄累加求和,初始值爲0
        int sum = 0;
        // 初始化語句
        int i = 0;
        do {
            //判斷獲取的數組是奇數仍是偶數
            if (i % 2 == 0) {
                //若是是偶數就累加求和
                sum += i;
            }
            i++; // 4. 步進語句
        } while (i <= 100);  // 2. 條件判斷
        //打印求和的變量
        System.out.println("1‐100的偶數和是:" + sum);//1‐100的偶數和是:2550
    }
}

三種循環的區別

  • 若是條件判斷歷來沒有知足過,那麼for循環和while循環將會執行0次,可是do-while循環會執行至少一次。
  • for循環的變量在小括號當中定義,只有循環內部纔可使用。while循環和do-while循環初始化語句原本就在外面,因此出來循環以後還能夠繼續使用。
public class LoopDifference {
    public static void main(String[] args) {
        for (int i = 1; i < 0; i++) {
            System.out.println("Hello");
        }
        // System.out.println(i);  這一行是錯誤寫法!由於變量i定義在for循環小括號內,只有for循環本身才能用。
    
    
        int i = 1;
        do {
            System.out.println("World");
            i++;
        } while (i < 0);
        // 如今已經超出了do-while循環的範圍,咱們仍然可使用變量i
        System.out.println(i); // 2
    }
}

break關鍵字

用法有常見的兩種:

  • 用在switch語句當中,一旦執行,整個switch語句馬上結束。
  • 用在循環語句當中,一旦執行,整個循環語句馬上結束。打斷循環。

關於循環的選擇,有一個小建議:

  • 凡是次數肯定的場景多用for循環;不然多用while循環。

代碼演示

public class DemoBreak {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            // 若是但願從第4次開始,後續全都不要了,就要打斷循環
            if (i == 4) { // 若是當前是第4次
                break; // 那麼就打斷整個循環
            }
            System.out.println("Hello" + i);
        }
    }
}

continue關鍵字

常見用法

  • 用在循環語句當中一旦執行,馬上跳過當前次循環剩餘內容,立刻開始下一次循環。

代碼演示

public class DemoContinue {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 4) { // 若是當前是第4層
                continue; // 那麼跳過當前次循環,立刻開始下一次(第5層)
            }
            System.out.println(i + "層到了。");
        }
    }
}

死循環

死循環:也就是循環中的條件永遠爲true,死循環的是永不結束的循環在後期的開發中,會出現使用死循環的場景,例如:咱們須要讀取用戶輸入的輸入,可是用戶輸入多少數據咱們並不清楚,也只能使用死循環,當用戶不想輸入數據了,就能夠結束循環了,如何去結束一個死循環呢,就須要使用到跳出語句了。 

代碼演示

/*
永遠停不下來的循環,叫作死循環。

死循環的標準格式:
while (true) {
    循環體
}
*/
public class DemoDeadLoop {
    public static void main(String[] args) {
        while (true) {
            System.out.println("I Love Java!");
        }
        
        // System.out.println("Hello"); 錯誤
    }
}

嵌套循環

所謂嵌套循環,是指一個循環的循環體是另外一個循環。好比for循環裏面還有一個for循環,就是嵌套循環。總共的循環次數=外循環次數*內循環次數

嵌套循環格式: 

嵌套循環執行流程:
  • 執行順序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
  • 外循環一次,內循環屢次。
  • 好比跳繩:一共跳5組,每組跳10個。5組就是外循環,10個就是內循環。
練習:使用嵌套循環,打印5*8的矩形 

代碼實現

public class Test {
    public static void main(String[] args) {
        //5*8的矩形,打印5行*號,每行8個
        // 外循環5次,內循環8次
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 8; j++) {
                //不換行打印星號
                System.out.print("*");
            }//內循環打印8個星號後,須要一次換行
            System.out.println();
        }
    }
}
相關文章
相關標籤/搜索