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