1.概述:程序執(zhí)行過程中捂贿,各條語句的執(zhí)行順序對程序的結果是有影響的。所以我們需要清楚每條語句的執(zhí)行流程胳嘲。
2.三種結構:
? ? ? ? 2.1:順序結構? ? 根據(jù)編寫的順序厂僧,從上到下運行
? ? ? ? 2.2:判斷結構
? ? ? ? 2.3:循環(huán)結構
2.1? ? 順序結構
public class DemoSequence {
public static void main(String[] args) {
System.out.println("我走第一步后執(zhí)行第二步");
? ? ? ? System.out.println("我走第二步后執(zhí)行第三步");
? ? ? ? System.out.println("我走第三步后結束");
? ? }
}
2.2? ? 判斷語句
? ? ? ? 2.2.1? ? 選擇結構--if
? ? ? ? ? ? ? ? ? ? 1. 單if語句
????????????????if(關系表達式){
? ? ? ? ????????????????????? ?語句體;
? ? ? ? ? ? ? ? ? ?}
????????????????????????????流程圖:
代碼示例:
public class DemoIf {
public static void main(String[] args) {
int price =18;
? ? ? ? System.out.println("今天去市場買菜了牛,正在跟老板討價");
? ? ? ? System.out.println("你:老板颜屠,這條魚20塊賣不賣");
? ? ? ? if(price <=20){
System.out.println("老板:行嘞,那就20賣給您");
? ? ? ? }
System.out.println("你:拿魚回家做飯");
? ? }
}
2. if...else語句
????????????????if(關系表達式){
????????????????????????????語句體1鹰祸;
? ? ? ? ? ? ? ? ? }else? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? 語句體2甫窟;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ????? 流程圖:
代碼示例:
public class DemoIf {
public static void main(String[] args) {
int price =25;
? ? ? ? System.out.println("今天去市場買菜,正在跟老板討價");
? ? ? ? System.out.println("你:老板蛙婴,這條魚20塊賣不賣");
? ? ? ? if (price <=20) {
????????????System.out.println("老板:行嘞粗井,那就20賣給您");
? ? ? ? ? ? System.out.println("你:拿魚回家做飯");
? ? ? ? }else {
????????????System.out.println("老板:這魚價格要"+price+"呢!");
? ? ? ? ? ? System.out.println("你:算了算了,這價格太貴不要了");
? ? ? ? ? ? System.out.println("你:買別的回家做飯");
? ? ? ? }
}
}
3.多if...else語句
? ? ? ? ? ? ? ??????????if(判斷條件1){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 執(zhí)行語句1;
? ? ? ? ? ? ? ? ? ? ? ? ? }else? if(判斷條件2) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 執(zhí)行語句2浇衬;
? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ?......
? ? ? ? ? ? ? ? ? ? ? ? ? ? else? if(判斷條件n){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 執(zhí)行語句n懒构;
????????????????????????????}
? ? ? ? ? ? ? ? ? ? ? ? ? ? else? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 執(zhí)行語句n+1;
????????????????????????????}
? ? ? ? ? ? ? ? ? ? ? ? ? ? 流程圖:
代碼示例:
public class DemoIfExt {
public static void main(String[] args) {
/*
通過多if...else判斷考試成績等級
【90--100】:? 優(yōu)秀
【80--89】:? 良好
【70--79】:? 中等
【60--69】:? 及格
【0--59】:? ? 不及格
*/
? ? ? ? int score =85;
? ? ? ? if (score >=90 && score <=100) {
????????????????????System.out.println("你的成績等級:優(yōu)秀");
? ? ? ? }else if (score >=80 && score <90) {
????????????????????System.out.println("你的成績等級:良好");
? ? ? ? }else if (score >=70 && score <80) {
????????????????????System.out.println("你的成績等級:中等");
? ? ? ? }else if (score >=60 && score <70) {
????????????????????System.out.println("你的成績等級:及格");
? ? ? ? }else if (score >=0 && score <60) {
????????????????????System.out.println("你的成績等級:不及格");
? ? ? ? }else {//單獨處理不合理情況
? ? ? ? ? ? ????????System.out.println("你輸入的數(shù)據(jù)不合理");
? ? ? ? }
????}
}
TIP:
????????????1.自己嘗試用if語句代替三元運算符
?2.2.2switch語句
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? switch(表達式) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case? ? 常量值1:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 語句體1;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
????????????????????????????????????case? ? 常量值2:
????????????????????????????????????????????語句體2耘擂;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case? ? 常量值3:
????????????????????????????????????????????語句體3胆剧;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? default:
????????????????????????????????????????????語句體n+1;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
????????????????????????????????}
?流程圖:
public class DemoSwitch {
public static void main(String[] args) {
int day =3;
? ? ? ? switch (day){
????????????case 1:
????????????????????????System.out.println("今天是星期一");
????????????????????????break;
? ? ? ? ? ? case 2 :
????????????????????????System.out.println("今天是星期二");
????????????????????????break;
? ? ? ? ? ? case 3:
????????????????????????System.out.println("今天是星期三");
????????????????????????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("數(shù)據(jù)不合理");
? ? ? ? ? ? ? ????????? break;? //可省略醉冤,但是不建議
? ? ? ? }
????}
}
TIP:
1.case里面的數(shù)值不能重復
2.switch后面的小括號中只能是下列數(shù)據(jù)類型? ??
????????????????????????????基本數(shù)據(jù)類型:byte/short/char/int
? ? ? ? ? ? ? ? ? ? ? ? ? ? 引用數(shù)據(jù)類型:String字符串赞赖,enum枚舉
3.case語句可以隨意,break語句也可以省略冤灾,直到遇到了break或者整個部分結束前域。
2.3循環(huán)結構
2.3.1 含義:在滿足循環(huán)條件的情況下,反復執(zhí)行某段代碼韵吨。
? ? ? ? ? ? 需要在合適的時候將循環(huán)條件設置為false,否則就是死循環(huán)了匿垄。
2.3.2? 結構:
1.for循環(huán)格式
? ? ? ? ? ? for(初始化表達式;布爾表達式归粉;步進表達式){
? ? ? ? ? ? ? ? ? ? ? ? 循環(huán)體
? ? ? ? ? ? }
流程圖:
代碼示例:
public class DemoFor {
//打印數(shù)字0到9
? ? public static void main(String[] args) {
????????int i =0;
? ? ? ? for(????;????i<10;????i++){????????????????//如果定義了i,則初始化表達式可以省略
? ? ? ? ? ? System.out.println(i);
? ? ? ? }
????}
}
2.while循環(huán)結構
格式:
標準格式:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?拓展格式:
while(條件判斷){? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 初始化語句椿疗;
? ??????循環(huán)體? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? while(條件判斷){
}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?循環(huán)體;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 步進語句糠悼;? ? ? ? //主要和條件判斷一起搭配使用
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
代碼示例:
public class DemoFor {
//打印數(shù)字0到9
? ? public static void main(String[] args) {
int i =0;? ? ? ? ? //初始化
? ? ? ? while(i<10){//與步進語句配合使用
? ? ? ? ? ? System.out.println(i);
? ? ? ? ? ? i++;? ? ? ? ? ? //步進語句
? ? ? ? }
? ? }
}
3.do...while循環(huán)結構
TIP:?基于while循環(huán)結構届榄,但是不同點在于先無條件執(zhí)行一次循環(huán)體。
? ? ? ? 記得while(條件判斷)后需要加一個分號倔喂。
格式:
標準格式:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?拓展格式:
do{? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????????初始化語句铝条;
? ??????循環(huán)體? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?do(條件判斷){
}while(條件判斷) ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 循環(huán)體;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 步進語句席噩;? ? ? ? //主要和條件判斷一起搭配使用
????????????????????????????????????????????????????????????????????????????????????}while(條件判斷);
代碼示例:
public class DemoFor {
//打印數(shù)字0到9
? ? public static void main(String[] args) {
????????int i =0;? ? ? ? ? //初始化
? ? ? ? do{
????????????System.out.println(i);
? ? ? ? ? ? i++;
? ? ? ? }while (i<10);
? ? }
}
區(qū)別分析:
1.如果while條件判斷從來沒有滿足過班缰,那么for循環(huán)和while循環(huán)會執(zhí)行0次,do...while循環(huán)會執(zhí)行1次悼枢。
2.for循環(huán)的變量只有在循環(huán)內部才可以使用埠忘。while和do...while循環(huán)在循環(huán)后還可以繼續(xù)使用。
小建議:
1.凡是循環(huán)次數(shù)確定的,多用for循環(huán)馒索。不確定的莹妒,用while循環(huán)。