第六章:Java基礎(chǔ)知識(shí)(二)

Java流程圖

流程控制

1. 分類

  • 順序結(jié)構(gòu):自上而下順序執(zhí)行锋边;
  • 分支結(jié)構(gòu):滿足一定條件執(zhí)行歌馍,否則不執(zhí)行黍氮;
  • 循環(huán)結(jié)構(gòu):滿足一定條件跛十,重復(fù)執(zhí)行彤路;

2. 順序結(jié)構(gòu)

定義:代碼按照自上而下順序執(zhí)行。

3. 分支結(jié)構(gòu)

定義:滿足一定條件芥映,代碼才執(zhí)行洲尊,否則不執(zhí)行远豺。

  • 分類

    • if...else...
    • switch
  • if結(jié)構(gòu):最簡(jiǎn)單的分支結(jié)構(gòu);

    • 語(yǔ)法結(jié)構(gòu)
    if(判斷條件){
        滿足條件執(zhí)行的代碼
    }
    
    • 注意
      • if是一個(gè)關(guān)鍵字坞嘀,區(qū)分大小寫躯护;
      • if后面必須在()號(hào)內(nèi)放置一個(gè)boolean類型的值,或者返回值是boolean類型的表達(dá)式丽涩;
      • if判斷條件后面不能加;號(hào)棺滞,否則會(huì)導(dǎo)致后面的代碼直接執(zhí)行,與if條件無(wú)關(guān)矢渊;
      • {}號(hào)中的內(nèi)容可以是一句代碼继准,也可以是多行代碼;
    public class ConditionalStatement {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int age = 18;
            if(age>=18) {
                System.out.println("歡迎進(jìn)入昆淡!");
            }
        }
    }
    
    圖1.if語(yǔ)句
  • if...else...結(jié)構(gòu):滿足和不滿足分別執(zhí)行不同的代碼锰瘸;

    • 語(yǔ)法結(jié)構(gòu)
    if(判斷條件){
        滿足條件執(zhí)行的代碼
    }else{  // 否則
        不滿足條件執(zhí)行的代碼
    }
    
    • 注意
      • if和else是一個(gè)組合刽严,兩個(gè){}中的代碼只會(huì)執(zhí)行一個(gè)昂灵;
    public class ConditionalStatement {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int age = 16;
            if(age>=18) {
                System.out.println("歡迎進(jìn)入!");
            }else {
                System.out.println("禁止入內(nèi)舞萄!");
            }
        }
    }
    
    圖2.if...else語(yǔ)句
  • if(){}else if(){}else if(){}...else{}結(jié)構(gòu)

    • 語(yǔ)法結(jié)構(gòu)
    if(條件1){
        滿足條件1時(shí)候執(zhí)行的代碼
    }else if(條件2){
        滿足條件2時(shí)候執(zhí)行的代碼
    }else if(條件3){
        滿足條件3時(shí)候執(zhí)行的代碼
    }...else{
        前面的條件都不滿足時(shí)候執(zhí)行的代碼
    }
    
    • 注意
      • 這是多重判斷眨补;
      • 可以對(duì)多個(gè)值進(jìn)行匹配;
      • 如果匹配成功倒脓,只會(huì)執(zhí)行其中一個(gè)滿足條件的代碼撑螺;
    public class ConditionalStatement {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int month = 4;
            if((month==3) || (month==4) || (month==5)){
                System.out.println(month + "月份是春季");
            }else if((month==6) || (month==7) || (month==8)){
                System.out.println(month + "月份是夏季");
            }else if((month==9) || (month==10) || (month==11)){
                System.out.println(month + "月份是秋季");
            }else if((month==1) || (month==2) || (month==12)){
                System.out.println(month + "月份是冬季");
            }else{
            System.out.println(month + "月份不存在");
            }
        }
    }
    
    圖3.if(){}else if(){}else{}語(yǔ)句
  • if嵌套:if條件語(yǔ)句中再次添加判斷;

    • 語(yǔ)法結(jié)構(gòu)
    if(條件1){
        if(條件2){
            同時(shí)滿足條件1和條件2時(shí)候執(zhí)行的代碼
        }else{
            滿足條件1崎弃,不滿足條件2時(shí)候執(zhí)行的代碼
        }
    }else{
        不滿足條件1時(shí)候執(zhí)行的代碼
    }
    
  • switch分支結(jié)構(gòu)

    • 語(yǔ)法結(jié)構(gòu)
    變量key;
    switch(key){
        case value1:
            key==value1 時(shí)候執(zhí)行的代碼;
            break;
        case value2:
            key==value2 時(shí)候執(zhí)行的代碼
            break;
        ...
        // 如果key和所有的value都不匹配甘晤,就執(zhí)行default
        default:
            ...
            break;
    }
    
    • 注意
      • 與case搭配使用;
      • 根據(jù)key不斷匹配value值饲做,如果匹配上則執(zhí)行對(duì)應(yīng)代碼线婚,其他不執(zhí)行;
    • case穿透
      • 定義:case穿透是指在switch中一段代碼執(zhí)行結(jié)束后沒(méi)有break結(jié)束盆均,造成執(zhí)行了其他case中代碼的情況塞弊;
      • 危害:可能會(huì)執(zhí)行一些不相干的代碼;
      • 好處:當(dāng)多個(gè)判斷返回同一個(gè)結(jié)果的時(shí)候可以利用case穿透泪姨;
    • default
      • 在switch中游沿,如果所有的case都沒(méi)有匹配到key的值,就會(huì)執(zhí)行default中的內(nèi)容肮砾;
      • default代碼塊可以放置在任意獨(dú)立位置诀黍;
    public class ConditionalStatement {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int month = 4;
            switch(month){
                case 12:
                case 1:
                case 2:
                    System.out.println(month + "月份是冬季");
                    break;
        
                case 3:
                case 4:
                case 5:
                    System.out.println(month + "月份是春季");
                    break;
        
                case 6:
                case 7:
                case 8:
                    System.out.println(month + "月份是夏季");
                    break;
    
                case 9:
                case 10:
                case 11:
                    System.out.println(month + "月份是秋季");
                    break;
            
                default:
                    System.out.println(month + "不存在");
                    break;
            }
        }
    }
    
    圖4.switch語(yǔ)句

4. 循環(huán)結(jié)構(gòu)

定義:滿足一定條件下,可重復(fù)執(zhí)行的語(yǔ)句仗处。

  • 分類

    • for循環(huán)
    • while循環(huán)
    • do...while循環(huán)
  • for循環(huán)

    • 語(yǔ)法結(jié)構(gòu)
    /**
     * 初始化語(yǔ)句:又叫循環(huán)前表達(dá)式
     * 條件判斷語(yǔ)句:又叫關(guān)系表達(dá)式
     * 條件控制語(yǔ)句:又叫循環(huán)后表達(dá)式
     */
    for(初始化語(yǔ)句; 條件判斷語(yǔ)句; 條件控制語(yǔ)句){
      循環(huán)體
    }
    
    • for循環(huán)執(zhí)行流程
      • 執(zhí)行初始化語(yǔ)句
      • 執(zhí)行條件判斷語(yǔ)句
        • 如果返回true蔗草,就繼續(xù)執(zhí)行
        • 如果返回false咒彤,就結(jié)束循環(huán)
      • 執(zhí)行循環(huán)體
      • 執(zhí)行條件控制語(yǔ)句
      • 再次執(zhí)行條件判斷語(yǔ)句,重復(fù)循環(huán)
    public class Forloop {
    
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          //定義各位咒精、十位镶柱、百位
          int gw, sw, bw;
          //定義計(jì)數(shù)器
          int count = 0;
          //for循環(huán)
          for(int i = 0; i < 1000; i++) {
              //獲取個(gè)位、十位模叙、百位字面值
              gw = i % 10;
              sw = i / 10 % 10;
              bw = i / 100;
              //判斷是否為水仙花數(shù)
              if((gw*gw*gw+sw*sw*sw+bw*bw*bw) == i) {
                  System.out.println(i + "是一個(gè)水仙花數(shù)");
                  count++;
              }
          }
          System.out.println("1000以內(nèi)一共有"+count+"個(gè)水仙花數(shù)");
      }
    }
    
    圖5.for循環(huán)
    • 注意事項(xiàng)

      • 初始化語(yǔ)句歇拆,在循環(huán)開(kāi)始前執(zhí)行,無(wú)論循環(huán)多少次范咨,只執(zhí)行一次
      • 條件判斷語(yǔ)句故觅,其結(jié)果必須是boolean值
      • 循環(huán)體,如果只有一句話渠啊,花括號(hào)可省略输吏,建議不要省略
      • 條件控制語(yǔ)句,在循環(huán)體執(zhí)行完之后執(zhí)行
    • for循環(huán)特殊形式

      • 條件判斷語(yǔ)句省略替蛉,無(wú)限循環(huán)
      //條件永為true
      for(i=1; ;i++){}
      
      • 條件控制語(yǔ)句省略贯溅,無(wú)限循環(huán)
      //條件永為true
      for(int i = 1; i<=100;){}
      
      • 初始化語(yǔ)句和條件控制語(yǔ)句省略,無(wú)限循環(huán)
      for(;true;){}
      
      • 條件判斷語(yǔ)句和條件控制語(yǔ)句省略躲查,無(wú)限循環(huán)
      for(int i = 1;;){}
      
      • 三個(gè)語(yǔ)句都省略
      //相當(dāng)于while(true)語(yǔ)句
      for(;;){}
      
  • while循環(huán)

    • 語(yǔ)法結(jié)構(gòu)
    初始化語(yǔ)句
    while(條件判斷語(yǔ)句){
      循環(huán)體
      條件控制語(yǔ)句
    }
    
    • while循環(huán)執(zhí)行流程
      • 執(zhí)行初始化語(yǔ)句
      • 執(zhí)行條件判斷語(yǔ)句
        • 如果是true它浅,就繼續(xù)執(zhí)行
        • 如果是false,就結(jié)束循環(huán)
      • 執(zhí)行循環(huán)體
      • 執(zhí)行條件控制語(yǔ)句
      • 再執(zhí)行條件判斷語(yǔ)句镣煮,重復(fù)循環(huán)
    public class Whileloop {
    
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          int i = 1;
          int sum = 0;
          while(i <= 100) {
              sum += i;
              i++;
          }
          System.out.println(sum);
      }
    
    }
    
    圖6.while循環(huán)
    • 注意事項(xiàng)

      • 一般將while循環(huán)看作是for循環(huán)的簡(jiǎn)寫格式
      • 一般在循環(huán)次數(shù)不明確的情況下使用
      • 條件控制語(yǔ)句也屬于循環(huán)語(yǔ)句
    • while循環(huán)特殊形式

    //當(dāng)條件判斷語(yǔ)句一直是true姐霍,while進(jìn)入死循環(huán)
    while(true){}
    
  • do...while循環(huán)

    • 語(yǔ)法結(jié)構(gòu)
    初始化語(yǔ)句
    do{
      循環(huán)體
      條件控制語(yǔ)句
    }while(條件判斷語(yǔ)句);
    
    • do...while循環(huán)執(zhí)行流程

      • 執(zhí)行初始化語(yǔ)句
      • 執(zhí)行循環(huán)體
      • 執(zhí)行條件控制語(yǔ)句
      • 執(zhí)行條件判斷語(yǔ)句
        • 如果為true,就繼續(xù)循環(huán)
        • 如果為false典唇,就結(jié)束循環(huán)
    • 注意事項(xiàng)

      • 無(wú)論條件是否成立镊折,都會(huì)執(zhí)行循環(huán)體,直到條件判斷語(yǔ)句為false結(jié)束
      • 所以介衔,循環(huán)體至少執(zhí)行一次
  • break恨胚、continue和return關(guān)鍵字

    • break作用

      • 在switch語(yǔ)句和循環(huán)中使用
      • 結(jié)束switch語(yǔ)句或終止并跳出循環(huán)
      • 只能終止所在循環(huán)體,不能終止父循環(huán)
    • continue作用

      • 終止本次循環(huán)夜牡,并跳過(guò)本次循環(huán)continue后的代碼与纽,進(jìn)入下輪循環(huán)
    • return作用

      • 返回,是與方法對(duì)應(yīng)的塘装,可寫在方法體的任意地方
      • 結(jié)束整個(gè)方法急迂,return后的代碼都不執(zhí)行
    • break和continue也可用于父循環(huán)

    public static void main(String[] args) {
      
       w:for (int i = 0; i < 10; i++ ) {
          //外循環(huán)語(yǔ)句
          System.out.println("外循環(huán)語(yǔ)句.....前");
          for (int j = 0; j < 10; j++) {
              break w;
          }
          System.out.println("外循環(huán)語(yǔ)句.....后");
       }
    }
    

鍵盤錄入-Scanner

作用:給用戶提供輸入的通道。

1. 使用

  • 導(dǎo)包:import java.util.Scanner蹦肴;
  • 創(chuàng)建鍵盤錄入對(duì)象:Scanner input = new Scanner(System.in)僚碎;
  • 提示用戶輸入內(nèi)容:System.out.println("請(qǐng)輸入任意內(nèi)容:")
  • 獲取用戶輸入內(nèi)容:String str = input.next()阴幌;
  • 使用所獲取的數(shù)據(jù)勺阐;
//1卷中、導(dǎo)包
import java.util.Scanner;

public class ScannerTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //2、創(chuàng)建鍵盤錄入對(duì)象
        Scanner input = new Scanner(System.in);
        //3渊抽、提示用戶輸入內(nèi)容
        System.out.println("請(qǐng)輸入任意內(nèi)容:");
        //4蟆豫、獲取用戶輸入內(nèi)容
        String str = input.next();
        //使用所獲取的數(shù)據(jù)
        System.out.println(str);
    }
}
圖7.Scanner使用

2. 注意

  • 不同的方法接受不同類型的參數(shù),
input.next()    //獲取任意內(nèi)容懒闷,格式都會(huì)變成String字符串類型
input.nextInt() //獲取整型int內(nèi)容
input.nextDouble()  //獲取double類型內(nèi)容
input.nextBoolean() //獲取boolean類型內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末十减,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子愤估,更是在濱河造成了極大的恐慌帮辟,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玩焰,死亡現(xiàn)場(chǎng)離奇詭異由驹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)昔园,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門蔓榄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蒿赢,你說(shuō)我怎么就攤上這事润樱≡ィ” “怎么了羡棵?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)嗅钻。 經(jīng)常有香客問(wèn)我皂冰,道長(zhǎng),這世上最難降的妖魔是什么养篓? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任秃流,我火速辦了婚禮,結(jié)果婚禮上柳弄,老公的妹妹穿的比我還像新娘舶胀。我一直安慰自己,他們只是感情好碧注,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布嚣伐。 她就那樣靜靜地躺著,像睡著了一般萍丐。 火紅的嫁衣襯著肌膚如雪轩端。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天逝变,我揣著相機(jī)與錄音基茵,去河邊找鬼奋构。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拱层,可吹牛的內(nèi)容都是我干的弥臼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼根灯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼醋火!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起箱吕,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤芥驳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后茬高,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體兆旬,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年怎栽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丽猬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熏瞄,死狀恐怖脚祟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情强饮,我是刑警寧澤由桌,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站邮丰,受9級(jí)特大地震影響行您,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜剪廉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一娃循、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斗蒋,春花似錦捌斧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至爆哑,卻和暖如春洞难,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工队贱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留色冀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓柱嫌,卻偏偏與公主長(zhǎng)得像锋恬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子编丘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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