Java核心基礎第3篇-Java流程控制

IT蚱蜢哥發表於2021-07-11

Java流程控制

本章一起來探討下Java的流程控制語句。主要從以下幾個方面展開:

  • Java分支語句
  • Java迴圈語句

Java其實和其他任何的開發語言一樣,分支語句迴圈語句是必不可少的,有個這兩個功能之後,我們完成類似:

  1. 判斷成績等級,優秀或者良好
  2. 完成九九乘法表等相關的操作

image-20210711173100749

一、分支語句

1.1 分支語句簡介

  • 分支語句根據一定的條件有選擇地執行或跳過特定的語句
  • 從而來完成根據不同的條件,得到不同的結果,來滿足現實生活中的需求
  • Java中提供了多種實現分支語句的方式
    • 1)if : 單分支語句,如果滿足進入該語句塊
    • 2)if...else: 如果滿足進入該if語句塊,否則進入else語句塊,二選一
    • 3)if...else if...else if...else:多分支語句,條件滿足進入一個分支,如果都不滿足進入 else
    • 4)switch...case: 實現語句塊

Java分支語句

1.2 if單分支語句

if單分支語句,表示只要條件滿足,就會進入語句塊內容,否則直接跳過。

上圖左側部分就是表示if單分支語句

//語法
if(條件表示式){
    //如果條件為true,執行到該語句。否則跳過該語句
}

案例:

如果成績score大於等於90,將grade等級設定有優秀,否則忽略

public static void main(String[] args) {
    int score = 91;
    String grade = "";
    if(score>=90) {
        grade = "優秀";
        System.out.println("小明獲得雞腿一隻");
    }
    System.out.println("end...");
}

注意:以後程式碼過程中,注意測試。否則條件特別容易被漏掉

1.3 if...else雙分支語句

if...else稱為雙分支語句,如果條件滿足則進入if語句塊,否則進入else語句塊;

也就是說ifelse語句塊必須會進入其中的一個分支;同時也不存在兩個分支同時進入;

如上圖右側,就是if...else的使用場景

語法:

// 格式  雙分支語句   if 或者else 永遠進入一個分支
if(條件){
    //條件為真,進入
}else{
    //否則進入else
}

案例:

如果小明成績不低於90分,獎勵一隻雞腿,否則只能吃青菜

public static void main(String[] args) {
    int score = 89;
    //注意:以後程式碼過程中,注意測試。否則條件特別容易被漏掉
    if(score>=90) {
        System.out.println("小明獲得雞腿一隻");
    }else {
        System.out.println("小明被罰只能吃青菜");
    }
    System.out.println("end...");
}

1.4 if...else if...else語法

if...else if...else也被稱為多分支語句,可以指定多個條件。

但是能夠進入分支的只有一個

image-20210711185515878

語法:

//語法
if(條件){
    //滿足進入
}else if(條件2){
    //滿足進入
}else if(條件3){
    //滿足進入
}else{
   	//都不滿足,進入else
}

案例:

不同的條件進入不同的分支,例如:成績為88,獎勵麻辣雞爪一個

public static void main(String[] args) {
    int score = 50;
    // 注意:以後程式碼過程中,注意測試。否則條件特別容易被漏掉
    if (score >= 90) {
        System.out.println("小明獲得雞腿一隻");
    } else if (score >= 80) {
        System.out.println("麻辣雞爪一個!");
    } else if (score >= 60) {
        System.out.println("獎勵練習題一打!");
    } else {
        System.out.println("小明被暴打了一頓");
    }
    System.out.println("end...");
}

注意:如果多個條件同時滿足,那麼會從上而下,自動匹配。當進入一個分支之後,就不會在進入其他分支。

1.5 switch...case語句

在處理多個選項的時候,除了可以使用if...else,Java還提供了另外一種分支語句,那就是switch...case

switch語句將從選項值相匹配的case標籤處開始執行,知道語句結束或者遇到break關鍵字

image-20210711215008423

語法結構:

  • switch(表示式)中表示式的返回值必須是下述幾種型別之一:int, byte, char, short, 列舉, 字串
  • case子句中的值必須是常量,且所有case子句中的值應是不同的;
  • default子句是最終執行
  • break語句用來在執行完一個case分支後使程式跳出switch語句塊;
// 給固定的內容
switch(表示式){
    case 常量1:
        //語句塊
        break;
    case 常量1:
        //語句塊
        break;
    case 常量1:
        //語句塊
        break;
    default:
        //語句塊:類似else
}

案例:

根據不同的值,獲取不同的級別

public static void main(String[] args) {

    int top = 1;
    switch (top) {

        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;
        default:
            System.out.println("墊底");
    }

}

注意:

①表示式的值如果和常量的內容保持一致,表示會進入該程式碼塊
②break,跳出當前的語句快,否則會一直往下執行

二、迴圈語句

2.1 迴圈語句簡介

在滿足指定條件下,反覆執行特定的程式碼。

例如:將1-100之間的和進行累加;

public static void main(String[] args) {
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        sum = sum+i;
    }
    System.out.println("sum=" + sum);
}

Java中提供了三種基本的迴圈:

  • for迴圈
    • 1)普通for迴圈
    • 2)增強for迴圈
  • while
  • do...while

image-20210711222528933

2.2 for迴圈

for 迴圈語句是支援迭代的一種通用結構, 利用每次迭代之後更新的計數器或類似的變數來控制迭代次數

for一般用來明確迴圈次數的情況使用,更加的方便

1、迴圈組成部分:

​ a.初始化
​ b.迴圈條件
​ c.迴圈體,迴圈的內容
​ d.迭代(改變原來的值)

//語法:
for(初始化;條件判斷;迭代)
{
    //迴圈體 具體反覆執行的程式碼
}

2、案例

列印1-100之間的偶數列

for (int i = 1; i <= 100; i++) {
    if(i%2==0){
        System.out.println("i=" + i);
    }
}

3、for執行順序

  1. 第一步,對i進行初始化為1
  2. 第二步,判斷i是否小於100
  3. 第三步,如果返回true,執行對應語句塊內容
  4. 第四步,執行語句塊內容,進行迭代,將i進行++操作
  5. 第五步,迭代完畢之後在進行判斷,執行第二步操作
  6. 第六步,如果滿足繼續進入程式碼塊,如果不滿足,則跳出迴圈

image-20210711221205176

2.3 while迴圈

當條件為 true 時,while 迴圈執行一條語句(也可以是一個語句塊)。一般格式為

語法格式(先判斷,再執行):
[初始值]
while(條件)
{
    //語句塊
    // 迭代[更改初始值]
}

如果開始迴圈條件的值就為 false, 則 while 迴圈體一次也不執行

案例:

將1-100之間的和進行累加操作

public static void main(String[] args) {
    int result = 0;
    int i = 1;
    while (i <= 100) { // 判斷條件
        // 語句塊
        result += i;
        System.out.println("i=" + i + " result=" + result);
        i++;
    }

}

2.4 do...while

如果希望迴圈體至少執行一次, 則應該將檢測條件放在最後。 使用 do/while 迴圈語句可以實現這種操作方式;

whiledo...while 最大的區別就是:

  • while:先判斷,再執行
  • do...while:先執行,再判斷,所以do...while至少都會執行一次

語法格式:

語法格式:(先執行,在判斷:不管條件如何,都會至少執行一次)
[初始化內容]
do{
    //語句塊 
    [迭代]
}while(判斷條件);

案例:

將1-100之間的和進行累加操作

public static void main(String[] args) {
    int result = 0;
    int i = 1;
    do {
        result += i;
        System.out.println("i=" + i + " result=" + result);
        i++;
    } while (i <= 100);
}

2.5 中斷迴圈

Java提供了continuebreak 關鍵字用來終止迴圈繼續執行。

  • continue用來終止本次迴圈,該continue關鍵字後面的所有內容都不會被執行;然而continue會迭代,然後執行下一次迴圈;
  • break 用來跳出當前所在的迴圈,屬於該迴圈下所有的內容都會終止執行;

以下是兩者的使用注意事項:

  • break只能用於switch語句和迴圈語句中。
  • continue 只能用於迴圈語句中。
  • 標號語句必須緊接在迴圈的頭部。標號語句不能用在非迴圈語句的前面。
  • break和continue之後不能有其他的語句,因為程式永遠不會執行break 和 continue之後的語句。

案例:

當i=5是,使用不同關鍵字,所得到結果

for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        //break; //1 2 3 4
        continue; //1 2 3 4  6 7 8 9 10
    }
    System.out.println("continue==>i = " + i);
}

image-20210711223525061

2.6 巢狀迴圈

public static void main(String[] args) {

    // 1. 外層: 控制行數 1-9行
    // 2.內層 :控制每一行 有多少個列(需要計算多殺次)
    for (int i = 1; i <= 9; i++) {
        // aa:標號 使用:分割 必須寫在迴圈的頭部
        for (int j = 1; j <= i; j++) {
            System.out.print(j + "*" + i + "=" + (j * i) + "\t");
        }
        System.out.println(); // 換行
    }
}

image-20210711173100749

三、實戰題

第1題:
實現一個查詢月天數的程式鍵盤輸入年月 判斷這年這個月有多少天。<閏年條件:能被4整除且不能被100整除或者能被400整除>
    
第2題:
國家稅務局規定不同行業的稅收數額度不一樣   
    	稅收=(工資-起徵點)*稅率
       行業有
       1.服務行業  2.製造業  3.農業
       1.服務行業稅收的起徵點是2000 元  2000元以上需要繳納10%的個人所得稅
       2.製造業稅收的起徵點是3000元  3000元以上需要繳納5%的個人所得稅
       3.農業稅收的起徵點是1500元  1500元以上需要繳納2%的個人所得稅
	   提示使用者選擇行業,輸入工資 ,輸出稅後工資。
   
第三題:
運費計算器:運輸公司對使用者計算運費.路程越遠每公里運費越低.每公里每噸貨物的基本運費為p,貨物重為w,距離為s,折扣為d,則總運費f的計算公式為
f=p*w*s*(1-d)
       s<250沒有折扣
       250<=s <500 2%折扣
       500<=s<1000 5%折扣
       1000<=s<2000  8%折扣
       2000以上 15%折扣。
                    
第四題:
編寫一個某年第一天是星期幾的查詢器:程式輸出:XXXX年一月一日是 星期X
提示:1900年一月一日是星期一

第五題:
根據流程圖完成銀行取錢業務程式

image-20210711224141038

第六題:
編寫一個日曆程式:輸入年月 按照格式輸出該年月的日曆
提示:1900年一月一日是星期一

image-20210711224236987

相關文章