9. 程序的控制流-選擇結(jié)構(gòu) 【連載 9】

從零開始學(xué)Java封面9.jpg

程序執(zhí)行的過(guò)程,我們可以把它認(rèn)為是一個(gè)流,實(shí)際的業(yè)務(wù)需求會(huì)根據(jù)不同的情況,來(lái)控制程序不同的流轉(zhuǎn)。這篇文章來(lái)討論其中的一種程序流轉(zhuǎn)情況,選擇控制流轉(zhuǎn)。Java 中對(duì)應(yīng)的結(jié)構(gòu)為控制結(jié)構(gòu)。

1. if 結(jié)構(gòu)

第一種情況,簡(jiǎn)單的判斷,意思是:如果滿足某個(gè)條件,就會(huì)執(zhí)行。

如果(條件滿足) {
    做某些事情
}

int age = 20;
if (age > 18) {
 System.out.println("你有投票權(quán)利");
}

執(zhí)行結(jié)果:

你有投票權(quán)利

也可以簡(jiǎn)寫,但是不建議這樣做,因?yàn)檎Z(yǔ)句比較多的情況下,程序的可讀性不好。

if (age > 18) System.out.println("你有投票權(quán)利");

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

如果滿足A條件,就執(zhí)行 a 操作,否則執(zhí)行 b操作。

如果(滿足A) {
  執(zhí)行 a 操作
} 否則 {
  執(zhí)行 b 操作
}

實(shí)例:

int age = 17;
if (age > 18) {
  System.out.println("你有投票權(quán)利。");
} else {
  System.out.println("對(duì)不起,你還未到投票的年齡。");
}

結(jié)果輸出:

對(duì)不起,你還未到投票的年齡。

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

如果滿足 A 條件,執(zhí)行 a操作,如果滿足 B 條件,執(zhí)行 b操作,否則都執(zhí)行 c操作。

如果 (滿足A) {
  執(zhí)行 a 操作
} 如果 (滿足B) {
  執(zhí)行 b 操作
} 否則 {
  執(zhí)行 c 操作
}

實(shí)例:根據(jù)年齡收費(fèi)的游樂(lè)場(chǎng),規(guī)則為

  • 4 歲以下免費(fèi)
  • 4 到 18 歲收費(fèi) 40 元
  • 18 歲(含 18)以上收費(fèi) 70 元

Java 程序?qū)崿F(xiàn):

int age = 13;
if (age < 4) {
  System.out.println("你需要消費(fèi)為 0 元");
} else if (age < 18) {
  System.out.println("你需要消費(fèi)為 40 元");
} else {
  System.out.println("你需要消費(fèi)為 70 元");
}

可以使用多個(gè) else if

int age = 13;
int price;
if (age < 4) {
  price = 0;
} else if (age < 18) {
  price = 40;
} else if (age < 40) {
  price = 60
} else {
  price = 70;
}
System.out.println("你需要消費(fèi)為: ¥" + price);

else 可以省略:

int age = 13;
int price;
if (age < 4) {
  price = 0;
} else if (age < 18) {
  price = 40;
} else if (age < 40) {
  price = 60
} 
System.out.println("你需要消費(fèi)為: ¥" + price);

4. switch 結(jié)構(gòu)

一個(gè)變量,當(dāng)?shù)扔诓煌闹担瑘?zhí)行不同的操作。

if-else if 語(yǔ)句表達(dá):

int month = 5;
if (month == 5) {
  System.out.println("5月");
} else if (month = 6) {
  System.out.println("6月");
} else if (month = 7) {
  System.out.println("7月");
} else if (month = 8) {
  System.out.println("8月");
} else {
  System.out.println("其他月");
}

使用 switch 結(jié)構(gòu):

int month = 5;
switch(month) {
  case 5 :
    System.out.println("5月");
    break;//可選
  case 6 : 
    System.out.println("6月");
    break;//可選
  case 7 : 
    System.out.println("7月");
    break;  //可選
  case 8 : 
    System.out.println("8月");
    break;//可選
  default ://可選
    System.out.println("其他月");
}

switch語(yǔ)句具有如下規(guī)則:

  • switch語(yǔ)句中的變量類型只能為String、byte、short、int或者char。
  • switch語(yǔ)句可以擁有多個(gè)case語(yǔ)句,每個(gè)case后面跟一個(gè)要比較的值和冒號(hào)。
  • case語(yǔ)句中的值的數(shù)據(jù)類型必須與變量的數(shù)據(jù)類型相同,而且只能是常量或者字面常量。扣扣交流群:468439140
  • 當(dāng)變量的值與case語(yǔ)句的值相等時(shí),那么case語(yǔ)句之后的語(yǔ)句開始執(zhí)行,直到break語(yǔ)句出現(xiàn)才會(huì)跳出switch語(yǔ)句。
  • 當(dāng)遇到break語(yǔ)句時(shí),switch語(yǔ)句終止。程序跳轉(zhuǎn)到switch語(yǔ)句后面的語(yǔ)句執(zhí)行。case語(yǔ)句不必須要包含break語(yǔ)句。如果沒(méi)有break語(yǔ)句出現(xiàn),程序會(huì)繼續(xù)執(zhí)行下一條case語(yǔ)句,直到出現(xiàn)break語(yǔ)句。
  • switch語(yǔ)句可以包含一個(gè)default分支,該分支必須是switch語(yǔ)句的最后一個(gè)分支。default在沒(méi)有case語(yǔ)句的值和變量值相等的時(shí)候執(zhí)行。default分支不需要break語(yǔ)句。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容