1.程序結(jié)構(gòu):順序結(jié)構(gòu),循環(huán)結(jié)構(gòu),選擇結(jié)構(gòu)
2.兩個(gè)變量表比較姑丑,如果變量是基本數(shù)據(jù)類型(byte,short,int,long,float,double,char,boolean)用關(guān)系運(yùn)算符(>,>=,<,<=,==,!=)表比較;如果變量是引用數(shù)據(jù)類型(String)表比較用equals()
//基本數(shù)據(jù)類型比較,用關(guān)系運(yùn)算符
int num1=10;
int num2=8;
boolean result1=num1==num2;
System.out.println(result1);
//引用數(shù)據(jù)類型比較用equals()
String s1="我是中國人";
String s2="我是中國人";
boolean result2=s1.equals(s2);
System.out.println(result2);
3.從鍵盤上接收用戶的數(shù)據(jù):
3.1:在類框架上面導(dǎo)包:import java.util.Scanner;
3.2:獲得從鍵盤上接收數(shù)據(jù)的能力
Scanner input=new Scanner(System.in);
3.3:從鍵盤上接收數(shù)據(jù)int num1=input.nextInt(); double num2=input.nextDouble(); String num3=input.next();
注意:鍵盤上不能接收char類型數(shù)據(jù)事期。
eg://導(dǎo)包 import java.util.Scanner; /** public class UserInput{ /** *程序的入口方法 */ public static void main(String[] args){ //獲得從鍵盤上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); System.out.println("請(qǐng)輸入一個(gè)整數(shù)"); //從鍵盤上接收一個(gè)整數(shù)并存在變量num1中 int num1=input.nextInt(); System.out.println("請(qǐng)輸入一個(gè)小數(shù):"); //從鍵盤上接收一個(gè)double類型的數(shù)并存在變量num2中 double num2=input.nextDouble(); System.out.println("請(qǐng)輸入一個(gè)字符串:"); //從鍵盤上接收一個(gè)String類型的數(shù)并存在變量num3中 String num3=input.next(); System.out.println("從鍵盤上接收的整數(shù)為:"+num1); System.out.println("從鍵盤上接收的小數(shù)為:"+num2); System.out.println("從鍵盤上接收的字符串為:"+num3); } }
4.基本if選擇結(jié)構(gòu):解決只有一種情況的問題
4.1:語法:if(條件){
代碼塊;
}基本if選擇結(jié)構(gòu)4.2:執(zhí)行流程:如果條件為true纸颜,就執(zhí)行大括號(hào)中的代碼塊兽泣;如果條件為false,就執(zhí)行if結(jié)構(gòu)之后的語句懂衩。
eg:public static void main(String[] args){ System.out.println("中午的歌是否唱得好?(y/n)"); //獲得從鍵盤上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); //從鍵盤上接收一個(gè)字符串并存在變量中 String answer=input.next(); //對(duì)結(jié)果判斷 if(answer.equals("y")){ System.out.println("給每位同學(xué)發(fā)朵大紅花"); } }
5.if-else結(jié)構(gòu):解決有兩種情況撞叨,這兩情況始終要執(zhí)行其中一種
5.1:語法 :if(條件){
代碼塊1;
}else{
代碼塊2;
}if-else結(jié)構(gòu)5.2:執(zhí)行流程:如果條件為true,就執(zhí)行代碼塊1浊洞;如果條件為false牵敷,就執(zhí)行代碼塊2;
eg:public static void main(String[] args){ System.out.println("明天中午的歌是否唱得好?(y/n)"); //獲得具有從鍵盤上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); //從鍵盤上接收一個(gè)字符串并存在變量中 String str1=input.next(); //判斷滿足哪種情況 if(str1.equals("y")){ System.out.println("老師請(qǐng)大家吃飯"); }else{ System.out.println("大家請(qǐng)老師吃飯"); } }
6.多重if選擇結(jié)構(gòu):解決有兩種及以上情況的問題
6.1:語法:if(條件1){
代碼塊1;
}else if(條件2){
代碼塊2;
}else if(條件3){
代碼塊3;
}else{
代碼塊4;
}多重if選擇結(jié)構(gòu)6.2:執(zhí)行流程:如果條件1為true,就執(zhí)行代碼塊1法希,再執(zhí)行多重if結(jié)構(gòu)之后的語句枷餐;如果條件1為false,就判斷條件2,如果條件2為true,就執(zhí)行代碼塊2苫亦,再執(zhí)行多重if結(jié)構(gòu)之后的語句毛肋;如果條件2為false,就判斷條件3,如果條件3為true,就執(zhí)行代碼塊3屋剑,再執(zhí)行多重if結(jié)構(gòu)之后的語句;如果條件3為false润匙,就執(zhí)行else塊中代碼塊4。
6.3:結(jié)構(gòu)特點(diǎn):
6.3.1:多重if選擇結(jié)構(gòu)中if塊有且僅有一個(gè)唉匾,else if塊可以有0個(gè)到多個(gè)孕讳,else塊可以有0個(gè)到1個(gè)。
6.3.2:多重if選擇結(jié)構(gòu)中,最多執(zhí)行一個(gè)情況(分支)巍膘,最少一個(gè)情況都不執(zhí)行(沒有else塊并且前面的條件都為false);
6.3.3: 如果用多重if選擇結(jié)構(gòu)解決多種情況(分支)等值判斷問題厂财,分支之間可以互換置不影響結(jié)果;如果用多重if選擇結(jié)構(gòu)解決多種情況(分支)范圍判斷問題峡懈,分支之間不一定可以互換位置璃饱。eg:public static void main(String[] args){ System.out.println("今天是星期幾?(1-7):"); //獲得具有從鍵盤上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); //從鍵盤上接收一個(gè)字符串并存在變量中 int today=input.nextInt(); //判斷滿足哪種情況 if(today==1){ System.out.println("早餐吃包子"); }else if(today==2){ System.out.println("早餐吃饅頭"); }else if(today==3){ System.out.println("早餐吃油條豆?jié){"); }else if(today==4){ System.out.println("早餐吃腸粉"); }else if(today==5){ System.out.println("早餐吃拉面"); }else if(today==6){ System.out.println("早餐吃豆皮"); }else{ System.out.println("睡覺"); } } public static void main(String[] args){ System.out.println("請(qǐng)輸入成績(jī)(0-100):"); //獲得具有從鍵盤上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); //從鍵盤上接收一個(gè)數(shù)并存在變量中 double score=input.nextDouble(); //判斷滿足哪種情況 if(score>=90){ System.out.println("優(yōu)秀"); }else if(score<80&&score>=60){ System.out.println("合格"); }else if(score<90&&score>=80){ System.out.println("良好"); }else{ System.out.println("再接再厲"); }
}
7.嵌套選擇結(jié)構(gòu):在一個(gè)選擇結(jié)構(gòu)的代碼塊中完整包含了另一個(gè)選擇結(jié)構(gòu)
7.1:選擇結(jié)構(gòu)之間可以任意嵌套肪康,但是嵌套要正確荚恶。
7.2:選擇結(jié)構(gòu)之間可以多層嵌套撩穿,但是一般兩到三層嵌套。
題目:參加百米賽跑裆甩,如果跑步時(shí)間超過10秒冗锁,謝謝參與;如果跑步時(shí)間不超過10秒嗤栓,恭喜你進(jìn)入決賽;進(jìn)入決賽后箍邮,輸入性別茉帅,如果性別是男,恭喜你進(jìn)入男子組決賽锭弊;如果性別是女堪澎,恭喜你進(jìn)入 女子組決賽eg:public static void main(String[] args){ //獲得具有從鍵盤上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); System.out.println("請(qǐng)輸入你百米跑步的時(shí)間:"); //從鍵盤上接收時(shí)間,并存在變量中 double time=input.nextDouble(); if(time>10){ System.out.println("謝謝參與"); }else if(time>=0&&time<=10){ System.out.println("請(qǐng)輸入你的性別(男/女):"); //從鍵盤上接收性別味滞,并存在變量中 String sex=input.next(); if(sex.equals("男")){ System.out.println("恭喜你進(jìn)入男子組決賽"); }else if(sex.equals("女")){ System.out.println("恭喜你進(jìn)入女子組決賽"); }else{ System.out.println("性別輸入有誤樱蛤!"); } }else{ System.out.println("時(shí)間輸入有誤!"); }
}
8.switch結(jié)構(gòu):解決多種情況等值判斷問題
8.1:語法:switch(表達(dá)式){
case 常量1:
代碼塊1;
break;
case 常量2:
代碼塊2;
break;
...
default:
default中的代碼塊;
break;
}
8.2:執(zhí)行流程:如果表達(dá)式的結(jié)果等于常量1剑鞍,就執(zhí)行代碼塊1昨凡,遇到break或者結(jié)尾}就跳出switch結(jié)構(gòu),執(zhí)行之后語句蚁署;如果表達(dá)式的結(jié)果等于常量2便脊,就執(zhí)行代碼塊2,遇到break或者結(jié)尾}就跳出switch結(jié)構(gòu)光戈,執(zhí)行之后語句哪痰;如果表達(dá)式不等于case后面的任意一個(gè)常量值,就執(zhí)行default中的代碼塊遇到break或者結(jié)尾}就跳出switch結(jié)構(gòu)久妆。
8.3:結(jié)構(gòu)特點(diǎn):
8.3.1:switch結(jié)構(gòu)中的表達(dá)式和常量晌杰,在jdk1.5前,支持byte,short,int,char類型
在jdk1.5后筷弦,支持枚舉類型
在jdk1.7后肋演,支持String類型。
8.3.2:switch結(jié)構(gòu)中,case塊可以有0個(gè)到多個(gè)奸笤,default塊可以有0個(gè)到1個(gè)惋啃。
8.3.3:在同一個(gè)switch結(jié)構(gòu)中,case后面的常量值必須不同监右。
8.3.4:switch結(jié)構(gòu)中边灭,case塊中break可以省略,但是省略break后,如果表達(dá)式等于當(dāng)前case塊的常量健盒,執(zhí)行完這個(gè)case塊中的}代碼后绒瘦,沒有遇到break和結(jié)尾會(huì)繼續(xù)往下執(zhí)行并且不再判斷称簿,直到遇到break和}結(jié)尾才會(huì)跳出switch結(jié)構(gòu).
一般情況下,case塊中break不要省略惰帽。
8.3.5:switch結(jié)構(gòu)中憨降,default塊可以放在switch結(jié)構(gòu)的大括號(hào)任何地方,不影響程序的 執(zhí)行该酗。
8.3.6:switch結(jié)構(gòu)中授药,case塊之間可以互換位置,不影響程序的執(zhí)行呜魄。
8.3.7:switch結(jié)構(gòu)中悔叽,可以執(zhí)行0個(gè)到多個(gè)情況。eg:public static void main(String[] args){ System.out.println("今天是星期幾爵嗅?(1-7):"); //獲得具有從鍵盤上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); //從鍵盤上接收一個(gè)字符串并存在變量中 int today=input.nextInt(); switch(today){ case 1: System.out.println("早餐吃包子"); break; case 2: System.out.println("早餐吃饅頭"); break; case 3: System.out.println("早餐吃油條豆?jié){"); break; case 4: System.out.println("早餐吃腸粉"); break; case 5: System.out.println("早餐吃拉面"); break; case 6: System.out.println("早餐吃豆皮"); break; case 7: System.out.println("睡覺"); break; default: System.out.println("你的輸入有誤娇澎!"); break; } }
9.switch結(jié)構(gòu) VS 多重if選擇結(jié)構(gòu)
9.1:相同點(diǎn):
9.1.1:都可以解決多種情況等值判斷問題,首選switch結(jié)構(gòu)睹晒;
9.1.2:在解決多種情況等值判斷問題時(shí)趟庄,分支之間可以互換位置。
9.1.3:都是最少一種情況(分支)都不執(zhí)行伪很。
9.2:不同點(diǎn):
9.2.1:作用不同:switch結(jié)構(gòu)只能解決多種情況等值判斷問題戚啥;
多重if選擇結(jié)構(gòu)既可以解決多種情況等值判斷問題,又可以解決多種情況范 圍判斷問題是掰。
9.2.2:條件不同:switch結(jié)構(gòu)中的表達(dá)式和常量有類型限制虑鼎;
多重if選擇結(jié)構(gòu)的條件是關(guān)系表達(dá)式,條件的結(jié)果是boolean.
9.2.3:執(zhí)行不同:switch結(jié)構(gòu)可以執(zhí)行多個(gè)分支的代碼塊键痛;多重if選擇結(jié)構(gòu)最多只能執(zhí)行一個(gè)分支的代碼塊炫彩。
9.2.4:break不同:switch結(jié)構(gòu)中可以用break跳出結(jié)構(gòu),多重if選擇結(jié)構(gòu)不能單獨(dú)用絮短。