順序結(jié)構(gòu)沒什么好講的,就是從上到下的寫代碼,所以接下來,壹哥就直接帶各位來學(xué)習(xí)分支結(jié)構(gòu)里的條件分支。我們在前面說過,分支結(jié)構(gòu),或者叫做條件分支,其實(shí)有兩種情況。一種是if...else...類型的條件分支,一種是switch...case...類型的條件分支,今天我們先來學(xué)習(xí)if和else的使用。
1. if基本語法
在Java代碼中,如果我們要根據(jù)某個(gè)條件來決定是否執(zhí)行一段代碼,就可以考慮使用if語句。if語句的基本語法是:
if(條件表達(dá)式){
//滿足條件時(shí)要執(zhí)行的語句
}
在上面的語法中,會根據(jù)if(條件表達(dá)式)里的計(jì)算結(jié)果(true或者false),由JVM決定是否執(zhí)行{}里的代碼塊。如果為true,就執(zhí)行,否則就不執(zhí)行。
2. if的單分支語句
首先我們通過一個(gè)簡單的需求,來學(xué)習(xí)if的單分支語句。所謂的單分支語句,就是說只有一種判斷情況,條件為真就執(zhí)行,否則就不執(zhí)行。比如這個(gè)需求:“如果你年滿18歲,就可以攢勁的節(jié)目”。
publicclassDemo01 {
publicstaticvoidmain(String[] args) {
// if語句
//案例1:如果年齡大于等于18歲,就可以看攢勁的節(jié)目了
System.out.println("請輸入你的年齡");
//獲取Scanner對象
Scanner sc=new Scanner(System.in);
//獲取年齡
int age = sc.nextInt();
//如果語句塊{}里面只有一條執(zhí)行語句,{}可以省略,但建議保留。
if(age >= 18){
System.out.println("本節(jié)目只對成年人開放,未成年人請?jiān)诟改概阃掠^看,節(jié)目正在緩沖......");
}
//案例2:如果身高大于180,且體重小于180,就可以當(dāng)模特
System.out.println("請輸入你的身高");
int height = sc.nextInt();
System.out.println("請輸入你的體重");
int weight = sc.nextInt();
//條件表達(dá)式中,可以結(jié)合之前學(xué)習(xí)過的邏輯運(yùn)算符//采用短路與&&,提高效率
if(height > 180 && weight < 180){
System.out.println("恭喜你,可以當(dāng)模特了");
}
}
}
另外如果{}語句塊里面只有一條執(zhí)行語句,{}可以省略,但建議保留。因?yàn)槿绻覀儾捎每s進(jìn)的格式,很容易把后面的語句都看成是if語句的執(zhí)行塊,所以不推薦忽略花括號的寫法。
單分支語句應(yīng)對的情況是很簡單的,在實(shí)際開發(fā)中可能會很復(fù)雜,這就需要使用多分支語句來進(jìn)行處理。
3. if的多分支語句
3.1 if...else結(jié)構(gòu)
if...else...結(jié)構(gòu)會根據(jù)條件表達(dá)式的結(jié)果進(jìn)行判斷,當(dāng)表達(dá)式的結(jié)果為true,則執(zhí)行語句塊A;否則執(zhí)行else后面的語句塊B;菊Z法結(jié)構(gòu)如下:
if(邏輯條件){
//滿足邏輯條件執(zhí)行的代碼
}else{
//不滿足邏輯條件執(zhí)行的代碼
}
案例如下:
publicclassDemo01 {
publicstaticvoidmain(String[] args) {
// if多分支語句
Scanner sc=new Scanner(System.in);
//案例:如果用戶名為admin、密碼為123456,就跳轉(zhuǎn)到首頁,否則跳轉(zhuǎn)到登錄頁面
System.out.println("請輸入用戶名");
String username = sc.next();
System.out.println("請輸入密碼");
String password = sc.next();
//equals()比較方法
if("admin".equals(username) && "123456".equals(password)){
System.out.println("跳轉(zhuǎn)首頁");
}else{
System.out.println("跳轉(zhuǎn)登錄頁面");
}
}
}
我們要注意,在java中,"=="比較的是兩個(gè)對象的內(nèi)存地址是否相同,String類中的equals()方法比較的是內(nèi)容是否相同。如果是基本數(shù)據(jù)類型,我們可以使用==進(jìn)行比較;而對于String字符串,一般是使用equals()方法進(jìn)行比較。
另外我們在使用equals()方法進(jìn)行比較時(shí),要采用類似"admin".equals(username)的寫法,而不要采用username.equals("admin")的寫法。因?yàn)閡sername對象的值有可能為null,這樣就可能會產(chǎn)生NullPointerException異常。
3.2 if多分支
if多分支就是可以利用多個(gè)if ... else if ...else...進(jìn)行串聯(lián)。多分支可以根據(jù)多個(gè)條件表達(dá)式的結(jié)果進(jìn)行判斷:
● 如果條件表達(dá)式1的結(jié)果為true,則執(zhí)行語句塊1;否則去判斷條件表達(dá)式2;
● 如果條件表達(dá)式2的結(jié)果為true,則執(zhí)行語句塊2,否則去判斷條件表達(dá)式3;
● ....
● 如果所有的條件表達(dá)式結(jié)果都為false,則執(zhí)行語句塊N+1;
● else是可選的,根據(jù)需要可以省略。
if多分支的語法結(jié)構(gòu)如下:
if(邏輯條件1){
//滿足邏輯條件1執(zhí)行的代碼
}else if(邏輯條件2){
//隱藏條件(不滿足條件1) 滿足邏輯條件2執(zhí)行的代碼
}else if(邏輯條件3){
//隱藏條件(不滿足條件1、2) 滿足邏輯條件3執(zhí)行的代碼
}else{
//不滿足以上所有邏輯條件執(zhí)行的代碼
}
需求案例:請你根據(jù)手上的資金選擇購買的手機(jī)品牌。如果你手里的錢大于10000,就買個(gè)蘋果;如果大于7000, 就買個(gè)華為;如果大于5000,就買個(gè)小米;如果大于3000,就買個(gè)諾基亞;否則,乖乖地去打公共電話。
publicclassDemo01 {
publicstaticvoidmain(String[] args) {
// if多分支語句
Scanner sc=new Scanner(System.in);
//請你根據(jù)手上的資金選擇購買的手機(jī)品牌。如果你手里的錢大于10000,就買個(gè)蘋果;
//如果大于7000, 就買個(gè)華為;如果大于5000,就買個(gè)小米;如果大于3000,就買個(gè)諾基亞;
//否則,乖乖地去打公共電話。
System.out.println("請輸入余額");
int money = sc.nextInt();
if(money > 10000){
System.out.println("蘋果手機(jī)");
}elseif(money > 7000){ //money <= 10000
System.out.println("華為手機(jī)");
}elseif(money > 5000){
System.out.println("小米手機(jī)");
}elseif(money > 3000){
System.out.println("諾基亞手機(jī)");
}else{
System.out.println("打公共電話");
}
}
}
大家要注意,我們在串聯(lián)使用多個(gè)if時(shí),要特別注意判斷順序和邊界條件的判斷。
4. if嵌套
if嵌套的語法結(jié)構(gòu)如下:
if(邏輯條件1){
if(邏輯條件2){
//滿足邏輯條件1且滿足條件2執(zhí)行的代碼
}else{
//滿足邏輯條件1但不滿足條件2執(zhí)行的代碼
}
}else{
//不滿足邏輯條件1執(zhí)行的代碼
}
需求案例:學(xué)校舉行跑步比賽,如果成績在15秒以內(nèi),可以進(jìn)入決賽,男的進(jìn)入男子組決賽,女的進(jìn)入女子組決賽。
publicclassDemo01 {
publicstaticvoidmain(String[] args) {
// if多條件嵌套
Scanner sc=new Scanner(System.in);
//學(xué)校舉行跑步比賽,如果成績在15秒以內(nèi),可以進(jìn)入決賽,男的進(jìn)入男子組決賽,女的進(jìn)入女子組決賽
System.out.println("請輸入你的比賽成績");
double score = sc.nextDouble();
if(score < 15){
System.out.println("請輸入你的性別");
String sex = sc.next();
if("男".equals(sex)){
System.out.println("恭喜進(jìn)入男子組");
}else{
System.out.println("恭喜進(jìn)入女子組");
}
}else{
System.out.println("很遺憾你被淘汰了。。");
}
}
}

返回頂部
刷新頁面
下到頁底