公司網(wǎng)站開(kāi)發(fā)建設(shè)什么會(huì)計(jì)科目今日財(cái)經(jīng)最新消息
選擇和分支結(jié)構(gòu)
- 選擇和分支結(jié)構(gòu)
- 一、復(fù)習(xí)問(wèn)答
- 二、選擇結(jié)構(gòu)
- 2.1 基礎(chǔ)選擇結(jié)構(gòu)
- 2.2 if-else結(jié)構(gòu)
- 2.3 多重if結(jié)構(gòu)
- 2.4 嵌套if結(jié)構(gòu)
- 三、分支結(jié)構(gòu)
- 四、局部變量
選擇和分支結(jié)構(gòu)
一、復(fù)習(xí)問(wèn)答
1、Java中基本數(shù)據(jù)類(lèi)型
2、類(lèi)型的轉(zhuǎn)換的兩種情形
3、數(shù)據(jù)類(lèi)型提升的規(guī)則
二、選擇結(jié)構(gòu)
2.1 基礎(chǔ)選擇結(jié)構(gòu)
語(yǔ)法:
if(條件表達(dá)式){
// 代碼塊}
執(zhí)行流程:先判斷條件,如果條件結(jié)果為true,則執(zhí)行代碼塊,否則就跳過(guò)代碼塊。
public class Demo01 {// 基礎(chǔ)if結(jié)構(gòu)public static void main(String[] args) {// 如果敵方英雄血量低于200,越塔強(qiáng)殺int hp = 250;if(hp < 200) {System.out.println("越塔強(qiáng)殺");}int temp = 20;if(temp > 20) {System.out.println("開(kāi)空調(diào)");}System.out.println("程序結(jié)束");}
}
2.2 if-else結(jié)構(gòu)
語(yǔ)法:
if(條件表達(dá)式){
// 代碼塊1}else{
? // 代碼塊2
}
執(zhí)行流程:先判斷條件,如果條件結(jié)果為true,則執(zhí)行代碼塊1,否則就執(zhí)行代碼塊2。
public class Demo02 {// if-else結(jié)構(gòu)public static void main(String[] args) {// 如果敵方英雄血量低于200,越塔強(qiáng)殺,否則繼續(xù)消耗int hp = 180;if(hp < 200) {System.out.println("越塔強(qiáng)殺");}else {System.out.println("繼續(xù)消耗");}// 定義一個(gè)整數(shù)變量,如果值為奇數(shù),輸出是奇數(shù),否則輸出是偶數(shù)int num = 20;
// int num1 = 8765;
// int g = num1 % 10;
// int s = num1 / 10 % 10;if(num % 2 == 1) {System.out.println("是奇數(shù)");}else {System.out.println("是偶數(shù)");}}
}
2.3 多重if結(jié)構(gòu)
語(yǔ)法:
if(條件表達(dá)式1){
// 代碼塊1}else if(條件表達(dá)式2){
? // 代碼塊2
}else{
? // 代碼塊3
}
執(zhí)行流程:先判斷條件1,如果條件結(jié)果為true,則執(zhí)行代碼塊1,否則就去判斷條件2,如果成立,則執(zhí)行代碼塊2,否則執(zhí)行代碼塊3。
注意:代碼從上往下執(zhí)行,任意一個(gè)條件成立,則不會(huì)繼續(xù)向下執(zhí)行其他判斷。
public class Demo03 {// 多重if結(jié)構(gòu)public static void main(String[] args) {// 如果成績(jī)低于60,顯示不及格,介于[60,80)之間,顯示一般,[80,90)之間,顯示良好,高于90,顯示優(yōu)秀int score = 95;
// if(score < 60) {
// System.out.println("不及格");
// }else if(score >= 60 && score < 80) {
// System.out.println("一般");
// }else if(score >= 80 && score < 90) {
// System.out.println("良好");
// }else {
// System.out.println("優(yōu)秀");
// }if(score >= 90) {System.out.println("優(yōu)秀");}else if(score >= 80) {System.out.println("良好");}else if(score >= 60) {System.out.println("一般");}else {System.out.println("不及格");}// 定義一個(gè)月份,輸出該月有多少天(都按平年計(jì)算)int month = 5;if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8|| month == 10 || month == 12) {System.out.println("31天");}else if(month == 2) {System.out.println("28天");}else {System.out.println("30天");}}
}
2.4 嵌套if結(jié)構(gòu)
語(yǔ)法:
if(外層條件表達(dá)式){
? // 外層代碼塊1
? if(內(nèi)層條件表達(dá)式){
? // 內(nèi)層代碼塊1? }else{
? // 內(nèi)層代碼塊2
? }
}else{
? // 外層代碼塊2
}
執(zhí)行流程:先判斷外層條件,如果條件結(jié)果為true,則執(zhí)行外層代碼塊1,否則就執(zhí)行外層代碼塊2。在執(zhí)行外層代碼塊1后,發(fā)現(xiàn)又有內(nèi)層if,繼續(xù)判斷內(nèi)層條件是否成立,如果成立,則執(zhí)行內(nèi)層代碼塊1,否則執(zhí)行內(nèi)層代碼塊2.
public class Demo04 {// 嵌套ifpublic static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("請(qǐng)選擇陣營(yíng):1、聯(lián)盟 2、部落");int select = input.nextInt();if(select == 1) {System.out.println("歡迎來(lái)到聯(lián)盟");System.out.println("請(qǐng)選擇種族:1、精靈 2、人類(lèi)");select = input.nextInt();if(select == 1) {System.out.println("歡迎加入精靈");}else {System.out.println("歡迎加入人類(lèi)");}}else {System.out.println("歡迎來(lái)到部落");}}
}
三、分支結(jié)構(gòu)
語(yǔ)法:
switch(變量、表達(dá)式){
? case 值1:
? // 代碼塊1
? case 值2:
? // 代碼塊2
? case 值3:
? // 代碼塊3
? default:
? // 代碼塊4
}
運(yùn)行流程:先得到變量或表達(dá)式的值,然后判斷該值是否等于值1,等于則執(zhí)行代碼塊1,如果不等于,繼續(xù)向下判斷值2,如果所有的值都不等于,則執(zhí)行default中的內(nèi)容。
變量的類(lèi)型為:byte、short、int、char、String(jdk1.7+)、枚舉
public class Demo05 {// switch用法// fall-downpublic static void main(String[] args) {int month = 3;switch(month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:System.out.println("31天");break;case 2:System.out.println("28天");break;case 4:case 6:case 9:case 11:System.out.println("30天");break;default:System.out.println("月份不對(duì)");}}
}
注意:當(dāng)沒(méi)有break時(shí),代碼會(huì)繼續(xù)向下執(zhí)行,直到switch結(jié)束或者遇到break為止。
public class Demo06 {// 求某年某月某日是當(dāng)年的第幾天,計(jì)算閏年// 判斷閏年的規(guī)則是:年份能被400整除,或者年份能被4整除并且不能被100整除,public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("請(qǐng)輸入年份:");int year = input.nextInt();System.out.println("請(qǐng)輸入月份:");int month = input.nextInt();System.out.println("請(qǐng)輸入日期:");int day = input.nextInt();int days = 0; // 計(jì)算總天數(shù)switch(month) {case 12:days += 30; // 加上11月case 11:days += 31; // 加上10月case 10:days += 30; // 加上9月case 9:days += 31; // 加上8月case 8:days += 31; // 加上7月case 7:days += 30; // 加上6月case 6:days += 31; // 加上5月case 5:days += 30; // 加上4月case 4:days += 31; // 加上3月case 3:if(year % 400 == 0 || year % 4 == 0 && year % 100 != 0) {days += 29;}else {days += 28;}case 2:days += 31; // 加上1月的天數(shù)// days = days + 31;case 1:days += day; // 加上當(dāng)月的天數(shù)
// days = days + day;break;default:System.out.println("月份不對(duì)");}System.out.println(year + "年" + month + "月" + day + "日是當(dāng)年的第"+days+"天");}
}
四、局部變量
- 聲明在方法內(nèi)部的變量,必須先賦值后使用。
- 作用域范圍:是從定義的行開(kāi)始到所在的代碼塊結(jié)束。
- 如果多個(gè)變量,在重合的作用域范圍,不能同名,會(huì)沖突報(bào)錯(cuò)。
public class Demo07 {// 局部變量的作用域public static void main(String[] args) {
// System.out.println(month); // 沒(méi)有定義之前不能使用int month = 5;int num = 8;if(month > 3) {
// int num = 6; // 范圍沖突System.out.println(num);System.out.println(month);}else {
// int num = 5; // 范圍沖突}System.out.println(num);System.out.println(month);}
}