|
本文是《凱哥陪你學(xué)系列之java基礎(chǔ)篇》 本講主要內(nèi)容: 判斷結(jié)構(gòu) 程序執(zhí)行順序,從上到下一行一行的執(zhí)行的。 1判斷語句 if語句: 三種格式: 1:只有if語句 2:if ….else語句 3:if ….else嵌套使用 1:只有if語句的 語法: if(條件表達(dá)式) { 執(zhí)行語句 } 作用:?jiǎn)螚l件判斷 注意:條件表達(dá)式的結(jié)果只能是true或是false 代碼演示: //需求:如果x>2輸出yes int x = 3; if(x >2){ System.out.println('YES'); } System.out.println('GAME OVER'); 結(jié)果: 輸出結(jié)果分析: if語句中條件表達(dá)式為true的時(shí)候才會(huì)執(zhí)行被if 大括號(hào)包含的代碼。 如果條件表達(dá)式為false的時(shí)候,if語句及其大括號(hào)包含的代碼都不會(huì)被執(zhí)行。 而 3>2 返回true所以會(huì)執(zhí)行if大括號(hào)內(nèi)的代碼。 注意: 雖然if語句有自己的控制范圍(就是if后面大括號(hào)的內(nèi)容)。但是如下代碼輸入的結(jié)果是什么? int b = 1; if(x>0) System.out.println(b); System.out.println('GAME OVER'); 輸出結(jié)果: 分析原因: 雖然if有自己控制范圍,但是當(dāng)if語句后面只有一行執(zhí)行語句的時(shí)候,此時(shí)if后面的一對(duì)大括號(hào)可以省略。 也即是說:如果if后面沒有大括號(hào)確定范圍。那么if語句只能控制離其最近的單條代碼。 擴(kuò)展: if 語句嵌套使用: 語法: if語句嵌套使用 if(表達(dá)式){ if(條件表達(dá)式2){ 執(zhí)行代碼 } } 代碼演示: if(x>2){ if(x==3){ System.out.println('YES'); } } System.out.println('GAME OVER'); 執(zhí)行結(jié)果: 思考:自己試著分析結(jié)果由來。 思考:如下代碼輸入結(jié)果 if(x>2) if(x>3) System.out.println('YES'); System.out.println('GAME OVER'); 數(shù)據(jù)結(jié)果: 分析輸出結(jié)果原因: 代碼中兩個(gè)if都沒有大括號(hào)指明范圍。所以if只能控制離其最近的單條語句。 所以:if(x>2) 這句離其最近的是 if(x>3) 而 if(x>3)離其最近的一句是:System.out.println('YES'); 又因?yàn)?x = 3 是大于2的。所以 x>2 返回true.就會(huì)接著執(zhí)行下面一句 if(x>3)這一句。 而 x=3不大于3的。所以 x>3返回false。這時(shí)候就不會(huì)再執(zhí)行其下面的一句。也就是:System.out.println('YES'); 而直接在往下一行執(zhí)行。 所以YES不會(huì)被輸出。而GAME OVER會(huì)被輸出。 2:if()….else使用 語法: if(條件表達(dá)式){ 執(zhí)行語句 }eles{ 執(zhí)行語句 } 作用:?jiǎn)螚l件判斷。如果不成立執(zhí)行else語句 代碼演示: //需求:如果x>2輸出yes 否則輸出no int x = 3; if(x >2){ System.out.println('YES'); }else{ System.out.println('NO'); } 輸出結(jié)果: 輸出結(jié)果分析: 3>2結(jié)果是true。所以就執(zhí)行輸出YES這條語句。而else語句不執(zhí)行。 簡(jiǎn)單理解: if(你的性別是男){ 請(qǐng)去男廁所 }else{ 請(qǐng)去女廁所 } 思考: 如下代碼輸出什么? int a = 2 ,b; if(a>1) b = 100; else b = 200; System.out.println('b='+b); 輸出結(jié)果: 擴(kuò)展: 簡(jiǎn)單的if else可以使用三元運(yùn)算符代替 上面代碼使用三元運(yùn)算符表示: b = (a>1?100:200); 完整代碼: int a = 2 ,b; if(a>1) b = 100; else b = 200; System.out.println('b='+b); //使用三元運(yùn)算符 b = (a>1?100:200); System.out.println('b='+b); System.out.println('GAME OVER'); 輸出結(jié)果 注意: if else簡(jiǎn)化成三元運(yùn)算符前提: 當(dāng)if else 運(yùn)算后,有一個(gè)具體的結(jié)果時(shí)候,可以簡(jiǎn)寫成三元運(yùn)算符。 3:ifelse嵌套使用 語法: if(條件表達(dá)式){ 執(zhí)行語句 } else if(條件表達(dá)式2){ 執(zhí)行語句2 }else{ 執(zhí)行語句3 } 作用:多條件判斷。 注意:雖然上面代碼很多。但是都是對(duì)同一個(gè)事物做判斷的。所以運(yùn)算完成后,最終有且只有一個(gè)執(zhí)行語句被執(zhí)行。 代碼演示: int x = 3; if(x >1){ System.out.println('1'); }else if(x >2){ System.out.println('2'); } else if( x>3){ System.out.println('3'); }else{ System.out.println('4'); } System.out.println('GAME OVER'); 輸出結(jié)果: 分析原因: 因?yàn)?x = 3 所以 x>1返回true 。所以輸出1。雖然 3>2 也返回的是ture.但是 (x>2)是在else語句的。只有當(dāng)上面if條件返回false的時(shí)候才會(huì)執(zhí)行else的語句。 所以,只輸出1. 思考: 如果去掉else后,修改成如下代碼,運(yùn)行結(jié)果又是什么? int j = 3; if(j >1){ System.out.println('j1'); } if(j >2){ System.out.println('j2'); } if( j>3){ System.out.println('j3'); }else{ System.out.println('j4'); } System.out.println('GAME OVER'); 運(yùn)行結(jié)果: 分析輸出結(jié)果: if(j>1){}這個(gè)是完整的一條語句。 因?yàn)?if(j>2)前面沒有else 所以 if(j>2){}這又是一條完整的語句 同理,if(j>3){}else{}這是一條完整的語句。 所以在執(zhí)行完輸出j1后,也會(huì)執(zhí)行輸出j2的語句。 有因?yàn)?不大于3.所以 j>3返回false.所以會(huì)執(zhí)行else的語句,也就是輸出j4的語句。 所以,輸出結(jié)果就是 j1 j2 j4 if 語句練習(xí): 1:根據(jù)用戶輸入的數(shù)值,輸出對(duì)應(yīng)的星期。 if語句練習(xí)2 需求: 根據(jù)用戶輸入的數(shù)值,輸出對(duì)應(yīng)的月中上中下旬值。 各位自己練習(xí)下。答案下節(jié)公布。 ps:歡迎關(guān)注凱哥微信公眾號(hào):凱哥Java |
|
|