我們有時會面臨人生的分岔路口,生活中也會有許多大大小小的選擇。
程序也是為了提高人們生活質量的,不可能脫離實際生活,所以Java程序中也必須得實現選擇結構。
當我們的代碼按照書寫順序一句一句執行的時候,此時則為順序結構。像我們書寫的多條輸出語句,會一句一句從上到下的按照順序執行。
選擇結構是在具備某種條件下就做什么選擇,在我們生活中也頻繁使用:如果我考了100分,我媽媽就會給我獎勵;如果今天不下雨,我就去公園玩......沒錯,Java就是使用如果,即if
1.if
單if語句
語法:if(條件:布爾類型的數據,可以是表達式,也可以用邏輯運算符){ //如果條件為 true,執行語句 };
注意:if(a!=0)和if(a)是等價的
流程圖:
如果我考試考了100分,那么媽媽就會給我獎勵一個玩具
package com.dh.control;
public class IfDemo01 {
public static void main(String[] args) {
//if
int score = 100;
if(score == 100){
System.out.println("太棒啦!獎勵一個小汽車!");
}
}
}
if...else語句
語法::if(條件表達式){ //滿足條件執行的語句 } else { //不滿足條件的執行語句 } ;
流程圖:
如果我考試考了100分,那么媽媽就會給我獎勵一個玩具,否則,就沒有獎勵了
package com.dh.control;
public class IfDemo01 {
public static void main(String[] args) {
//if...else
int score = 99;
if(score == 100){
System.out.println("太棒啦!獎勵一個小汽車!");
}else{
System.out.println("很遺憾,下次再接再厲!");
}
}
}
if...else if...else(else可選)
語法:if(條件表達式){ //滿足條件 1 的執行語句 } else if(條件表達式){ //可以有多個 else if 塊 //滿足條件 2 的執行語句 } else { //不滿足條件的執行語句 } ;
流程圖:
99分都沒有獎勵的話,就太讓人沮喪了,和媽媽重新商量了一下,媽媽承諾,如果我考試考了100分,給我獎勵一個玩具,如果我考了90分以上,就給我獎勵一個冰淇淋,否則,就沒有獎勵了
package com.dh.control;
public class IfDemo01 {
public static void main(String[] args) {
int score = 99;
if(score == 100){
System.out.println("太棒啦!獎勵一個小汽車!");
}else if(score>=90){
System.out.println("干的不錯!獎勵一個冰淇淋");
} else{
System.out.println("很遺憾,下次再接再厲!");
}
}
}
注意:選擇結構:判斷條件,符合條件則返回結果,不再進行之后的條件判斷,如果不符合條件,即繼續判斷條件,直到所有判斷條件都不滿足時最后一個為結果。*
package com.dh.control;
public class IfDemo02 {
public static void main(String[] args) {
int num = 3;
if(num>1){
System.out.println("3>1");
}else if(num>2){
System.out.println("3>2");
}
}
}
結果為輸出3>1,盡管3>2也成立,但是由於3>1已經滿足了條件,就會直接輸出結果,不會再往下做判斷了
if嵌套
語法:if(條件表達式){ if(條件表達式){ //滿足條件時執行的語句 } }
媽媽答應,如果期末考,數學考了100,語文90分以上,就可以去游樂場玩,否則就不能去了
package com.dh.control;
public class IfDemo03 {
public static void main(String[] args) {
int math = 100;
int chinese = 95;
if(math == 100){
if(chinese>90){
System.out.println("假期去游樂場玩!");
}
}else{
System.out.println("下次加油!");
}
}
}
//當然可以直接使用if(math==100 && chinese>90)一個判斷,但是這里只是為if嵌套舉例子
2.switch
選擇結構除了if選擇,還有一個switch選擇
語法:
switch(數據:byte、short、int、char、字符串、枚舉)
{
case 數據:{//執行語句}; break;
case 數據:{//執行語句}; break;
……
default:{//執行語句} break;
}
注意:
swtich只能做等值判斷,即switch()里的數據與case后面的數據進行比較
break的作用:終止整個switch選擇,若沒有break的話會繼續向下執行代碼
流程圖:
英語成績呢,沒有具體的分數,只有A-E五個等級,媽媽說,考A獎勵一個玩具,考B獎勵一個冰淇淋,考C什么都沒有,考D的話就要每天多背五個單詞,考E就要每天多背十個單詞,其它缺考就要罰站了!
package com.dh.control;
public class SwitchDemo {
public static void main(String[] args) {
char score = 'B';
switch (score){
case 'A': {
System.out.println("獎勵一個小汽車!");
}break;
case 'B': {
System.out.println("獎勵一個冰淇淋!");
}break;
case 'C': {
System.out.println("再接再厲!");
}break;
case 'D': {
System.out.println("每天多背五個單詞!");
}break;
case 'E': {
System.out.println("每天多背十個單詞!");
}break;
default:{
System.out.println("罰站!");
}break;
}
}
}
若去掉case B、C的break,就得碰到D的break語句才會退出,所以B、C和D的語句都會被執行
package com.dh.control;
public class SwitchDemo {
public static void main(String[] args) {
char score = 'B';
switch (score){
case 'A': {
System.out.println("獎勵一個小汽車!");
}break;
//去掉case B、C的break
case 'B': {
System.out.println("獎勵一個冰淇淋!");
}
case 'C': {
System.out.println("再接再厲!");
}
case 'D': {
System.out.println("每天多背五個單詞!");
}break;
case 'E': {
System.out.println("每天多背十個單詞!");
}break;
default:{
System.out.println("罰站!");
}break;
}
}
}
if和switch都為選擇結構,所以一般情況下,用if結構的,可以轉換為switch,用switch結構的,也可以轉換為if,大多數情況下會使用if,比較靈活。
有錯誤請指出~