Java核心基礎(chǔ)第3篇-Java流程控制

Java流程控制

本章一起來(lái)探討下Java的流程控制語(yǔ)句昂芜。主要從以下幾個(gè)方面展開(kāi):

  • Java分支語(yǔ)句
  • Java循環(huán)語(yǔ)句

Java其實(shí)和其他任何的開(kāi)發(fā)語(yǔ)言一樣洲尊,<u>分支語(yǔ)句</u><u>循環(huán)語(yǔ)句</u>是必不可少的澎语,有個(gè)這兩個(gè)功能之后蜗顽,我們完成類似:

  1. 判斷成績(jī)等級(jí)坑匠,優(yōu)秀或者良好
  2. 完成九九乘法表等相關(guān)的操作
image-20210711173100749

一血崭、分支語(yǔ)句

1.1 分支語(yǔ)句簡(jiǎn)介

  • 分支語(yǔ)句根據(jù)一定的條件有選擇地執(zhí)行或跳過(guò)特定的語(yǔ)句
  • 從而來(lái)完成根據(jù)不同的條件,得到不同的結(jié)果厘灼,來(lái)滿足現(xiàn)實(shí)生活中的需求
  • Java中提供了多種實(shí)現(xiàn)分支語(yǔ)句的方式
    • 1)if : 單分支語(yǔ)句夹纫,如果滿足進(jìn)入該語(yǔ)句塊
    • 2)if...else: 如果滿足進(jìn)入該if語(yǔ)句塊,否則進(jìn)入else語(yǔ)句塊,二選一
    • 3)if...else if...else if...else:多分支語(yǔ)句设凹,條件滿足進(jìn)入一個(gè)分支舰讹,如果都不滿足進(jìn)入 else
    • 4)switch...case: 實(shí)現(xiàn)語(yǔ)句塊
Java分支語(yǔ)句

1.2 if單分支語(yǔ)句

if單分支語(yǔ)句,表示只要條件滿足闪朱,就會(huì)進(jìn)入語(yǔ)句塊內(nèi)容月匣,否則直接跳過(guò)。

上圖左側(cè)部分就是表示if單分支語(yǔ)句

//語(yǔ)法
if(條件表達(dá)式){
    //如果條件為true奋姿,執(zhí)行到該語(yǔ)句锄开。否則跳過(guò)該語(yǔ)句
}

案例:

如果成績(jī)score大于等于90,將grade等級(jí)設(shè)置有優(yōu)秀称诗,否則忽略

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

注意:以后代碼過(guò)程中萍悴,注意測(cè)試。否則條件特別容易被漏掉

1.3 if...else雙分支語(yǔ)句

if...else稱為雙分支語(yǔ)句寓免,如果條件滿足則進(jìn)入if語(yǔ)句塊退腥,否則進(jìn)入else語(yǔ)句塊;

也就是說(shuō)ifelse語(yǔ)句塊必須會(huì)進(jìn)入其中的一個(gè)分支再榄;同時(shí)也不存在兩個(gè)分支同時(shí)進(jìn)入狡刘;

如上圖右側(cè),就是if...else的使用場(chǎng)景

語(yǔ)法:

// 格式  雙分支語(yǔ)句   if 或者else 永遠(yuǎn)進(jìn)入一個(gè)分支
if(條件){
    //條件為真困鸥,進(jìn)入
}else{
    //否則進(jìn)入else
}

案例:

如果小明成績(jī)不低于90分嗅蔬,獎(jiǎng)勵(lì)一只雞腿剑按,否則只能吃青菜

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

1.4 if...else if...else語(yǔ)法

if...else if...else也被稱為多分支語(yǔ)句艺蝴,可以指定多個(gè)條件。

但是能夠進(jìn)入分支的只有一個(gè)

image-20210711185515878

語(yǔ)法:

//語(yǔ)法
if(條件){
    //滿足進(jìn)入
}else if(條件2){
    //滿足進(jìn)入
}else if(條件3){
    //滿足進(jìn)入
}else{
    //都不滿足鸟废,進(jìn)入else
}

案例:

不同的條件進(jìn)入不同的分支猜敢,例如:成績(jī)?yōu)?8,獎(jiǎng)勵(lì)麻辣雞爪一個(gè)

public static void main(String[] args) {
    int score = 50;
    // 注意:以后代碼過(guò)程中盒延,注意測(cè)試缩擂。否則條件特別容易被漏掉
    if (score >= 90) {
        System.out.println("小明獲得雞腿一只");
    } else if (score >= 80) {
        System.out.println("麻辣雞爪一個(gè)!");
    } else if (score >= 60) {
        System.out.println("獎(jiǎng)勵(lì)練習(xí)題一打!");
    } else {
        System.out.println("小明被暴打了一頓");
    }
    System.out.println("end...");
}

注意:如果多個(gè)條件同時(shí)滿足添寺,那么會(huì)從上而下胯盯,自動(dòng)匹配。當(dāng)進(jìn)入一個(gè)分支之后计露,就不會(huì)在進(jìn)入其他分支博脑。

1.5 switch...case語(yǔ)句

在處理多個(gè)選項(xiàng)的時(shí)候,除了可以使用if...else票罐,Java還提供了另外一種分支語(yǔ)句叉趣,那就是switch...case

switch語(yǔ)句將從選項(xiàng)值相匹配的case標(biāo)簽處開(kāi)始執(zhí)行,知道語(yǔ)句結(jié)束或者遇到break關(guān)鍵字

image-20210711215008423

語(yǔ)法結(jié)構(gòu):

  • switch(表達(dá)式)中表達(dá)式的返回值必須是下述幾種類型之一:int,byte, char, short, 枚舉, 字符串
  • case子句中的值必須是常量该押,且所有case子句中的值應(yīng)是不同的疗杉;
  • default子句是最終執(zhí)行
  • break語(yǔ)句用來(lái)在執(zhí)行完一個(gè)case分支后使程序跳出switch語(yǔ)句塊;
// 給固定的內(nèi)容
switch(表達(dá)式){
    case 常量1:
        //語(yǔ)句塊
        break;
    case 常量1:
        //語(yǔ)句塊
        break;
    case 常量1:
        //語(yǔ)句塊
        break;
    default:
        //語(yǔ)句塊:類似else
}

案例:

根據(jù)不同的值沈善,獲取不同的級(jí)別

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("墊底");
    }

}

注意:

①表達(dá)式的值如果和常量的內(nèi)容保持一致乡数,表示會(huì)進(jìn)入該代碼塊
②break,跳出當(dāng)前的語(yǔ)句快,否則會(huì)一直往下執(zhí)行

二闻牡、循環(huán)語(yǔ)句

2.1 循環(huán)語(yǔ)句簡(jiǎn)介

在滿足指定條件下净赴,反復(fù)執(zhí)行特定的代碼。

例如:將1-100之間的和進(jìn)行累加罩润;

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中提供了三種基本的循環(huán):

  • for循環(huán)
    • 1)普通for循環(huán)
    • 2)增強(qiáng)for循環(huán)
  • while
  • do...while
image-20210711222528933

2.2 for循環(huán)

for循環(huán)語(yǔ)句是支持迭代的一種通用結(jié)構(gòu)玖翅, 利用每次迭代之后更新的計(jì)數(shù)器或類似的變量來(lái)控制迭代次數(shù)

for一般用來(lái)明確循環(huán)次數(shù)的情況使用,更加的方便

1割以、循環(huán)組成部分:

a.初始化
b.循環(huán)條件
c.循環(huán)體,循環(huán)的內(nèi)容
d.迭代(改變?cè)瓉?lái)的值)
//語(yǔ)法:
for(初始化;條件判斷;迭代)
{
    //循環(huán)體 具體反復(fù)執(zhí)行的代碼
}

2金度、案例

打印1-100之間的偶數(shù)列

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

3、for執(zhí)行順序

  1. 第一步严沥,對(duì)i進(jìn)行初始化為1
  2. 第二步猜极,判斷i是否小于100
  3. 第三步,如果返回true,執(zhí)行對(duì)應(yīng)語(yǔ)句塊內(nèi)容
  4. 第四步消玄,執(zhí)行語(yǔ)句塊內(nèi)容跟伏,進(jìn)行迭代丢胚,將i進(jìn)行++操作
  5. 第五步,迭代完畢之后在進(jìn)行判斷受扳,執(zhí)行第二步操作
  6. 第六步携龟,如果滿足繼續(xù)進(jìn)入代碼塊,如果不滿足勘高,則跳出循環(huán)
image-20210711221205176

2.3 while循環(huán)

當(dāng)條件為 true 時(shí)峡蟋,while 循環(huán)執(zhí)行一條語(yǔ)句(也可以是一個(gè)語(yǔ)句塊)。一般格式為

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

如果開(kāi)始循環(huán)條件的值就為 false, 則 while 循環(huán)體一次也不執(zhí)行

案例:

將1-100之間的和進(jìn)行累加操作

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

}

2.4 do...while

如果希望循環(huán)體至少執(zhí)行一次蕊蝗, 則應(yīng)該將檢測(cè)條件放在最后。 使用 do/while 循環(huán)語(yǔ)句可以實(shí)現(xiàn)這種操作方式;

whiledo...while 最大的區(qū)別就是:

  • while:先判斷立美,再執(zhí)行
  • do...while:先執(zhí)行匿又,再判斷方灾,所以do...while至少都會(huì)執(zhí)行一次

語(yǔ)法格式:

語(yǔ)法格式:(先執(zhí)行建蹄,在判斷:不管條件如何,都會(huì)至少執(zhí)行一次)
[初始化內(nèi)容]
do{
    //語(yǔ)句塊 
    [迭代]
}while(判斷條件);

案例:

將1-100之間的和進(jìn)行累加操作

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 中斷循環(huán)

Java提供了continuebreak 關(guān)鍵字用來(lái)終止循環(huán)繼續(xù)執(zhí)行裕偿。

  • continue用來(lái)終止本次循環(huán)洞慎,該continue關(guān)鍵字后面的所有內(nèi)容都不會(huì)被執(zhí)行;然而continue會(huì)迭代嘿棘,然后執(zhí)行下一次循環(huán)劲腿;
  • break 用來(lái)跳出當(dāng)前所在的循環(huán),屬于該循環(huán)下所有的內(nèi)容都會(huì)終止執(zhí)行鸟妙;

以下是兩者的使用注意事項(xiàng):

  • break只能用于switch語(yǔ)句和循環(huán)語(yǔ)句中焦人。
  • continue 只能用于循環(huán)語(yǔ)句中。
  • 標(biāo)號(hào)語(yǔ)句必須緊接在循環(huán)的頭部重父。標(biāo)號(hào)語(yǔ)句不能用在非循環(huán)語(yǔ)句的前面花椭。
  • break和continue之后不能有其他的語(yǔ)句,因?yàn)槌绦蛴肋h(yuǎn)不會(huì)執(zhí)行break 和 continue之后的語(yǔ)句房午。

案例:

當(dāng)i=5是矿辽,使用不同關(guān)鍵字,所得到結(jié)果

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 嵌套循環(huán)

public static void main(String[] args) {

    // 1. 外層: 控制行數(shù) 1-9行
    // 2.內(nèi)層 :控制每一行 有多少個(gè)列(需要計(jì)算多殺次)
    for (int i = 1; i <= 9; i++) {
        // aa:標(biāo)號(hào) 使用:分割 必須寫(xiě)在循環(huán)的頭部
        for (int j = 1; j <= i; j++) {
            System.out.print(j + "*" + i + "=" + (j * i) + "\t");
        }
        System.out.println(); // 換行
    }
}
image-20210711173100749

三郭厌、實(shí)戰(zhàn)題

第1題:
實(shí)現(xiàn)一個(gè)查詢?cè)绿鞌?shù)的程序鍵盤(pán)輸入年月 判斷這年這個(gè)月有多少天袋倔。<閏年條件:能被4整除且不能被100整除或者能被400整除>
    
第2題:
國(guó)家稅務(wù)局規(guī)定不同行業(yè)的稅收數(shù)額度不一樣   
        稅收=(工資-起征點(diǎn))*稅率
       行業(yè)有
       1.服務(wù)行業(yè)  2.制造業(yè)  3.農(nóng)業(yè)
       1.服務(wù)行業(yè)稅收的起征點(diǎn)是2000 元  2000元以上需要繳納10%的個(gè)人所得稅
       2.制造業(yè)稅收的起征點(diǎn)是3000元  3000元以上需要繳納5%的個(gè)人所得稅
       3.農(nóng)業(yè)稅收的起征點(diǎn)是1500元  1500元以上需要繳納2%的個(gè)人所得稅
       提示用戶選擇行業(yè),輸入工資 折柠,輸出稅后工資宾娜。
   
第三題:
運(yùn)費(fèi)計(jì)算器:運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi).路程越遠(yuǎn)每公里運(yùn)費(fèi)越低.每公里每噸貨物的基本運(yùn)費(fèi)為p,貨物重為w,距離為s,折扣為d,則總運(yùn)費(fèi)f的計(jì)算公式為
f=p*w*s*(1-d)
       s<250沒(méi)有折扣
       250<=s <500 2%折扣
       500<=s<1000 5%折扣
       1000<=s<2000  8%折扣
       2000以上 15%折扣。
                    
第四題:
編寫(xiě)一個(gè)某年第一天是星期幾的查詢器:程序輸出:XXXX年一月一日是 星期X
提示:1900年一月一日是星期一

第五題:
根據(jù)流程圖完成銀行取錢業(yè)務(wù)程序
image-20210711224141038
第六題:
編寫(xiě)一個(gè)日歷程序:輸入年月 按照格式輸出該年月的日歷
提示:1900年一月一日是星期一
image-20210711224236987

本博文由 IT蚱蜢哥 原創(chuàng)發(fā)布扇售!歡迎轉(zhuǎn)載前塔,注明出處贾陷!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嘱根,隨后出現(xiàn)的幾起案子髓废,更是在濱河造成了極大的恐慌,老刑警劉巖该抒,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慌洪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡凑保,警方通過(guò)查閱死者的電腦和手機(jī)冈爹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)欧引,“玉大人频伤,你說(shuō)我怎么就攤上這事≈ゴ耍” “怎么了憋肖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)婚苹。 經(jīng)常有香客問(wèn)我岸更,道長(zhǎng),這世上最難降的妖魔是什么膊升? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任怎炊,我火速辦了婚禮,結(jié)果婚禮上廓译,老公的妹妹穿的比我還像新娘评肆。我一直安慰自己,他們只是感情好非区,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布瓜挽。 她就那樣靜靜地躺著,像睡著了一般院仿。 火紅的嫁衣襯著肌膚如雪秸抚。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天歹垫,我揣著相機(jī)與錄音剥汤,去河邊找鬼。 笑死排惨,一個(gè)胖子當(dāng)著我的面吹牛吭敢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播暮芭,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鹿驼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼欲低!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起畜晰,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤砾莱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后凄鼻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體腊瑟,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年块蚌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了闰非。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡峭范,死狀恐怖财松,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纱控,我是刑警寧澤辆毡,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站其徙,受9級(jí)特大地震影響胚迫,放射性物質(zhì)發(fā)生泄漏喷户。R本人自食惡果不足惜唾那,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望褪尝。 院中可真熱鬧闹获,春花似錦、人聲如沸河哑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)璃谨。三九已至沙庐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間佳吞,已是汗流浹背拱雏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留底扳,地道東北人铸抑。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像衷模,于是被迫代替她去往敵國(guó)和親鹊汛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒲赂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容