02.選擇結(jié)構(gòu)

1.程序結(jié)構(gòu):順序結(jié)構(gòu),循環(huán)結(jié)構(gòu),選擇結(jié)構(gòu)

2.兩個(gè)變量表比較姑丑,如果變量是基本數(shù)據(jù)類型(byte,short,int,long,float,double,char,boolean)用關(guān)系運(yùn)算符(>,>=,<,<=,==,!=)表比較;如果變量是引用數(shù)據(jù)類型(String)表比較用equals()

//基本數(shù)據(jù)類型比較,用關(guān)系運(yùn)算符
        int num1=10;
        int num2=8;
        boolean result1=num1==num2;
        System.out.println(result1);
        
        //引用數(shù)據(jù)類型比較用equals()
        String s1="我是中國人";
        String s2="我是中國人";
        boolean result2=s1.equals(s2);
        System.out.println(result2);

3.從鍵盤上接收用戶的數(shù)據(jù):

3.1:在類框架上面導(dǎo)包:import java.util.Scanner;
3.2:獲得從鍵盤上接收數(shù)據(jù)的能力
Scanner input=new Scanner(System.in);
3.3:從鍵盤上接收數(shù)據(jù)

      int num1=input.nextInt();
      double num2=input.nextDouble(); 
      String num3=input.next();    

注意:鍵盤上不能接收char類型數(shù)據(jù)事期。

      eg://導(dǎo)包
import java.util.Scanner;
/**
public class UserInput{
/**
*程序的入口方法
*/
public static void main(String[] args){
  //獲得從鍵盤上接收數(shù)據(jù)的能力
  Scanner input=new Scanner(System.in);
      System.out.println("請(qǐng)輸入一個(gè)整數(shù)");
      //從鍵盤上接收一個(gè)整數(shù)并存在變量num1中
      int num1=input.nextInt();
      System.out.println("請(qǐng)輸入一個(gè)小數(shù):");
      //從鍵盤上接收一個(gè)double類型的數(shù)并存在變量num2中
      double num2=input.nextDouble();
      
      System.out.println("請(qǐng)輸入一個(gè)字符串:");
      //從鍵盤上接收一個(gè)String類型的數(shù)并存在變量num3中
      String num3=input.next();
      
      System.out.println("從鍵盤上接收的整數(shù)為:"+num1);
      System.out.println("從鍵盤上接收的小數(shù)為:"+num2);
      System.out.println("從鍵盤上接收的字符串為:"+num3);
  }
}

4.基本if選擇結(jié)構(gòu):解決只有一種情況的問題

4.1:語法:if(條件){
代碼塊;
}

基本if選擇結(jié)構(gòu)

4.2:執(zhí)行流程:如果條件為true纸颜,就執(zhí)行大括號(hào)中的代碼塊兽泣;如果條件為false,就執(zhí)行if結(jié)構(gòu)之后的語句懂衩。

      eg:public static void main(String[] args){
      System.out.println("中午的歌是否唱得好?(y/n)");
      //獲得從鍵盤上接收數(shù)據(jù)的能力
      Scanner input=new Scanner(System.in);
      //從鍵盤上接收一個(gè)字符串并存在變量中
      String answer=input.next();
      //對(duì)結(jié)果判斷
      if(answer.equals("y")){
          System.out.println("給每位同學(xué)發(fā)朵大紅花");
      }
  }

5.if-else結(jié)構(gòu):解決有兩種情況撞叨,這兩情況始終要執(zhí)行其中一種

5.1:語法 :if(條件){
代碼塊1;
}else{
代碼塊2;
}

if-else結(jié)構(gòu)

5.2:執(zhí)行流程:如果條件為true,就執(zhí)行代碼塊1浊洞;如果條件為false牵敷,就執(zhí)行代碼塊2;

      eg:public static void main(String[] args){
      System.out.println("明天中午的歌是否唱得好?(y/n)");
      //獲得具有從鍵盤上接收數(shù)據(jù)的能力
      Scanner input=new Scanner(System.in);
      //從鍵盤上接收一個(gè)字符串并存在變量中
      String str1=input.next();
      //判斷滿足哪種情況
      if(str1.equals("y")){
          System.out.println("老師請(qǐng)大家吃飯");
      }else{
          System.out.println("大家請(qǐng)老師吃飯");
      }
  }

6.多重if選擇結(jié)構(gòu):解決有兩種及以上情況的問題

6.1:語法:if(條件1){
代碼塊1;
}else if(條件2){
代碼塊2;
}else if(條件3){
代碼塊3;
}else{
代碼塊4;
}

多重if選擇結(jié)構(gòu)

6.2:執(zhí)行流程:如果條件1為true,就執(zhí)行代碼塊1法希,再執(zhí)行多重if結(jié)構(gòu)之后的語句枷餐;如果條件1為false,就判斷條件2,如果條件2為true,就執(zhí)行代碼塊2苫亦,再執(zhí)行多重if結(jié)構(gòu)之后的語句毛肋;如果條件2為false,就判斷條件3,如果條件3為true,就執(zhí)行代碼塊3屋剑,再執(zhí)行多重if結(jié)構(gòu)之后的語句;如果條件3為false润匙,就執(zhí)行else塊中代碼塊4。
6.3:結(jié)構(gòu)特點(diǎn):
6.3.1:多重if選擇結(jié)構(gòu)中if塊有且僅有一個(gè)唉匾,else if塊可以有0個(gè)到多個(gè)孕讳,else塊可以有0個(gè)到1個(gè)。
6.3.2:多重if選擇結(jié)構(gòu)中,最多執(zhí)行一個(gè)情況(分支)巍膘,最少一個(gè)情況都不執(zhí)行(沒有else塊并且前面的條件都為false);
6.3.3: 如果用多重if選擇結(jié)構(gòu)解決多種情況(分支)等值判斷問題厂财,分支之間可以互換置不影響結(jié)果;如果用多重if選擇結(jié)構(gòu)解決多種情況(分支)范圍判斷問題峡懈,分支之間不一定可以互換位置璃饱。

      eg:public static void main(String[] args){
      System.out.println("今天是星期幾?(1-7):");
      //獲得具有從鍵盤上接收數(shù)據(jù)的能力
      Scanner input=new Scanner(System.in);
      //從鍵盤上接收一個(gè)字符串并存在變量中
      int today=input.nextInt();
      //判斷滿足哪種情況
      if(today==1){
          System.out.println("早餐吃包子");
      }else if(today==2){
          System.out.println("早餐吃饅頭");
      }else if(today==3){
          System.out.println("早餐吃油條豆?jié){");
      }else if(today==4){
          System.out.println("早餐吃腸粉");
      }else if(today==5){
          System.out.println("早餐吃拉面");
      }else if(today==6){
          System.out.println("早餐吃豆皮");
      }else{
          System.out.println("睡覺");
      }
  }
  public static void main(String[] args){
  System.out.println("請(qǐng)輸入成績(jī)(0-100):");
  //獲得具有從鍵盤上接收數(shù)據(jù)的能力
  Scanner input=new Scanner(System.in);
  //從鍵盤上接收一個(gè)數(shù)并存在變量中
  double score=input.nextDouble();
  
  //判斷滿足哪種情況
  if(score>=90){
      System.out.println("優(yōu)秀");
  }else if(score<80&&score>=60){
      System.out.println("合格");
  }else if(score<90&&score>=80){
      System.out.println("良好");
  }else{
      System.out.println("再接再厲");
  }

}

7.嵌套選擇結(jié)構(gòu):在一個(gè)選擇結(jié)構(gòu)的代碼塊中完整包含了另一個(gè)選擇結(jié)構(gòu)

7.1:選擇結(jié)構(gòu)之間可以任意嵌套肪康,但是嵌套要正確荚恶。
7.2:選擇結(jié)構(gòu)之間可以多層嵌套撩穿,但是一般兩到三層嵌套。
題目:參加百米賽跑裆甩,如果跑步時(shí)間超過10秒冗锁,謝謝參與;如果跑步時(shí)間不超過10秒嗤栓,恭喜你進(jìn)入決賽;進(jìn)入決賽后箍邮,輸入性別茉帅,如果性別是男,恭喜你進(jìn)入男子組決賽锭弊;如果性別是女堪澎,恭喜你進(jìn)入 女子組決賽

  eg:public static void main(String[] args){
  //獲得具有從鍵盤上接收數(shù)據(jù)的能力
  Scanner input=new Scanner(System.in);
  System.out.println("請(qǐng)輸入你百米跑步的時(shí)間:");
  //從鍵盤上接收時(shí)間,并存在變量中
  double time=input.nextDouble();
  if(time>10){
      System.out.println("謝謝參與");
  }else if(time>=0&&time<=10){
      System.out.println("請(qǐng)輸入你的性別(男/女):");
      //從鍵盤上接收性別味滞,并存在變量中
      String sex=input.next();
      if(sex.equals("男")){
          System.out.println("恭喜你進(jìn)入男子組決賽");
      }else if(sex.equals("女")){
          System.out.println("恭喜你進(jìn)入女子組決賽");
      }else{
          System.out.println("性別輸入有誤樱蛤!");
      }
  }else{
      System.out.println("時(shí)間輸入有誤!");
  }

}

8.switch結(jié)構(gòu):解決多種情況等值判斷問題

8.1:語法:switch(表達(dá)式){
case 常量1:
代碼塊1;
break;
case 常量2:
代碼塊2;
break;
...
default:
default中的代碼塊;
break;
}
8.2:執(zhí)行流程:如果表達(dá)式的結(jié)果等于常量1剑鞍,就執(zhí)行代碼塊1昨凡,遇到break或者結(jié)尾}就跳出switch結(jié)構(gòu),執(zhí)行之后語句蚁署;如果表達(dá)式的結(jié)果等于常量2便脊,就執(zhí)行代碼塊2,遇到break或者結(jié)尾}就跳出switch結(jié)構(gòu)光戈,執(zhí)行之后語句哪痰;如果表達(dá)式不等于case后面的任意一個(gè)常量值,就執(zhí)行default中的代碼塊遇到break或者結(jié)尾}就跳出switch結(jié)構(gòu)久妆。
8.3:結(jié)構(gòu)特點(diǎn):
8.3.1:switch結(jié)構(gòu)中的表達(dá)式和常量晌杰,在jdk1.5前,支持byte,short,int,char類型
在jdk1.5后筷弦,支持枚舉類型
在jdk1.7后肋演,支持String類型。
8.3.2:switch結(jié)構(gòu)中,case塊可以有0個(gè)到多個(gè)奸笤,default塊可以有0個(gè)到1個(gè)惋啃。
8.3.3:在同一個(gè)switch結(jié)構(gòu)中,case后面的常量值必須不同监右。
8.3.4:switch結(jié)構(gòu)中边灭,case塊中break可以省略,但是省略break后,如果表達(dá)式等于當(dāng)前case塊的常量健盒,執(zhí)行完這個(gè)case塊中的}代碼后绒瘦,沒有遇到break和結(jié)尾會(huì)繼續(xù)往下執(zhí)行并且不再判斷称簿,直到遇到break和}結(jié)尾才會(huì)跳出switch結(jié)構(gòu).
一般情況下,case塊中break不要省略惰帽。
8.3.5:switch結(jié)構(gòu)中憨降,default塊可以放在switch結(jié)構(gòu)的大括號(hào)任何地方,不影響程序的 執(zhí)行该酗。
8.3.6:switch結(jié)構(gòu)中授药,case塊之間可以互換位置,不影響程序的執(zhí)行呜魄。
8.3.7:switch結(jié)構(gòu)中悔叽,可以執(zhí)行0個(gè)到多個(gè)情況。

  eg:public static void main(String[] args){
  System.out.println("今天是星期幾爵嗅?(1-7):");
  //獲得具有從鍵盤上接收數(shù)據(jù)的能力
  Scanner input=new Scanner(System.in);
  //從鍵盤上接收一個(gè)字符串并存在變量中
  int today=input.nextInt();
  switch(today){
      case 1:
          System.out.println("早餐吃包子");
          break;
      case 2:
          System.out.println("早餐吃饅頭");
          break;
      case 3:
          System.out.println("早餐吃油條豆?jié){");
          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;
  }
}

9.switch結(jié)構(gòu) VS 多重if選擇結(jié)構(gòu)

9.1:相同點(diǎn):
9.1.1:都可以解決多種情況等值判斷問題,首選switch結(jié)構(gòu)睹晒;
9.1.2:在解決多種情況等值判斷問題時(shí)趟庄,分支之間可以互換位置。
9.1.3:都是最少一種情況(分支)都不執(zhí)行伪很。
9.2:不同點(diǎn):
9.2.1:作用不同:switch結(jié)構(gòu)只能解決多種情況等值判斷問題戚啥;
多重if選擇結(jié)構(gòu)既可以解決多種情況等值判斷問題,又可以解決多種情況范 圍判斷問題是掰。
9.2.2:條件不同:switch結(jié)構(gòu)中的表達(dá)式和常量有類型限制虑鼎;
多重if選擇結(jié)構(gòu)的條件是關(guān)系表達(dá)式,條件的結(jié)果是boolean.
9.2.3:執(zhí)行不同:switch結(jié)構(gòu)可以執(zhí)行多個(gè)分支的代碼塊键痛;多重if選擇結(jié)構(gòu)最多只能執(zhí)行一個(gè)分支的代碼塊炫彩。
9.2.4:break不同:switch結(jié)構(gòu)中可以用break跳出結(jié)構(gòu),多重if選擇結(jié)構(gòu)不能單獨(dú)用絮短。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末江兢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子丁频,更是在濱河造成了極大的恐慌杉允,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件席里,死亡現(xiàn)場(chǎng)離奇詭異叔磷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奖磁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門改基,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咖为,你說我怎么就攤上這事秕狰〕砝埃” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵鸣哀,是天一觀的道長(zhǎng)架忌。 經(jīng)常有香客問我,道長(zhǎng)我衬,這世上最難降的妖魔是什么叹放? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮挠羔,結(jié)果婚禮上许昨,老公的妹妹穿的比我還像新娘。我一直安慰自己褥赊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布莉恼。 她就那樣靜靜地躺著拌喉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俐银。 梳的紋絲不亂的頭發(fā)上尿背,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音捶惜,去河邊找鬼田藐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吱七,可吹牛的內(nèi)容都是我干的汽久。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼踊餐,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼景醇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吝岭,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤三痰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后窜管,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體散劫,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年幕帆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了获搏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜓肆,死狀恐怖颜凯,靈堂內(nèi)的尸體忽然破棺而出谋币,到底是詐尸還是另有隱情,我是刑警寧澤症概,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布蕾额,位于F島的核電站,受9級(jí)特大地震影響彼城,放射性物質(zhì)發(fā)生泄漏诅蝶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一募壕、第九天 我趴在偏房一處隱蔽的房頂上張望调炬。 院中可真熱鬧,春花似錦舱馅、人聲如沸缰泡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棘钞。三九已至,卻和暖如春干毅,著一層夾襖步出監(jiān)牢的瞬間宜猜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工硝逢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姨拥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓渠鸽,卻偏偏與公主長(zhǎng)得像叫乌,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拱绑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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