1.循環(huán):重復(fù)性做某件事。作用:減化代碼,提高復(fù)用性
2.循環(huán)結(jié)構(gòu)的組成部分
2.1:初始化語(yǔ)句:要作循環(huán)前的準(zhǔn)備語(yǔ)句。
2.2:循環(huán)條件(判斷語(yǔ)句):循環(huán)要執(zhí)行時(shí)滿足條件。
2.3:條件疊加(控制語(yǔ)句):改變循環(huán)的條件
2.4:循環(huán)體:循環(huán)要做的事
3.for循環(huán):解決先判斷后執(zhí)行,循環(huán)次數(shù)固定的重復(fù)性操作問(wèn)題
3.1:語(yǔ)法:for(初始化語(yǔ)句1;循環(huán)條件2;條件疊加3){
循環(huán)體北专;
}
3.2:執(zhí)行流程:先執(zhí)行初始化語(yǔ)句1,再判斷循環(huán)條件2旬陡,如果循環(huán)條件2為false,就跳出for循環(huán)結(jié)構(gòu)拓颓,執(zhí)行之后語(yǔ)句;如果循環(huán)條件2為true,就執(zhí)行循環(huán)體描孟,再執(zhí)行條件疊加3驶睦,重復(fù)藍(lán)色字體部分。
3.3:結(jié)構(gòu)特點(diǎn):
3.3.1:for循環(huán)結(jié)構(gòu)的初始化語(yǔ)句1有且僅執(zhí)行一次匿醒;循環(huán)條件2可以執(zhí)行一次到多次场航;條件疊加3和循環(huán)全可以執(zhí)行0次到多次。
3.3.2:for循環(huán)結(jié)構(gòu)中小括號(hào)中兩個(gè)分號(hào)一定不能省略廉羔。
3.3.3:for循環(huán)結(jié)構(gòu)初始化語(yǔ)句1不能直接省略溉痢,如果要省略可以將初始化語(yǔ)句1寫(xiě)在for循環(huán)結(jié)構(gòu)前面;循環(huán)條件2直接可以省略蜜另,省略后就變成死循環(huán)适室;條件疊加3直接省略嫡意,就變成死循環(huán)举瑰,如果想省略條件疊加3又不會(huì)變成死循環(huán);for循環(huán)結(jié)構(gòu)三個(gè)條件可以同時(shí)省略蔬螟,只是死循環(huán)此迅。
3.3.4:for循環(huán)結(jié)構(gòu)的初始化語(yǔ)句1和條件疊加3可以由一到多個(gè)式子組成,式子之間用逗號(hào)分隔。eg:for(int i=1;i<=100;i++){ ? System.out.println("第"+i+"次good good study,day day up"); ? }
4.while循環(huán):解決先判斷后執(zhí)行耸序,循環(huán)次數(shù)不固定
4.1:語(yǔ)法:
初始化語(yǔ)句;
while(循環(huán)條件){
循環(huán)體忍些;
疊加條件;
}4.2:執(zhí)行流程:先執(zhí)行初始化語(yǔ)句坎怪,再判斷循環(huán)條件罢坝,如果循環(huán)條件為false,跳出while循 環(huán),執(zhí)行之后的語(yǔ)句搅窿;如果循環(huán)條件為true,就執(zhí)行循環(huán)體和疊加條件嘁酿,然 后再重復(fù)藍(lán)色字體部分。
4.3:結(jié)構(gòu)特點(diǎn):while循環(huán)結(jié)構(gòu)中男应,初始化語(yǔ)句有且僅執(zhí)行一次闹司,循環(huán)條件可以執(zhí)行1次到多 次,循環(huán)體和疊加條件可以執(zhí)行0次到多次沐飘。eg:public static void main(String[] args){ //初始化語(yǔ)句 int saveMoney=0;//存款 int save=3000;//每個(gè)月要存的錢(qián)數(shù) int month=0; while(saveMoney<=10000000){ //循環(huán)體 saveMoney=saveMoney+save; //疊加條件 month++; save=save+1000; } System.out.println(month+"個(gè)月后成為千萬(wàn)富翁,共用"+(month/12)+"年"); }
5.do-while循環(huán):解決先無(wú)條件執(zhí)行一次循環(huán)體游桩,再判斷再執(zhí)行的重復(fù)性問(wèn)題
5.1:語(yǔ)法:
初始化語(yǔ)句;
do{
循環(huán)體耐朴;
疊加條件借卧;
}while(循環(huán)條件);5.2:執(zhí)行流程:先執(zhí)行初始化語(yǔ)句,然后執(zhí)行循環(huán)體和疊加條件隔箍,再執(zhí)行循環(huán)條件谓娃,如果循環(huán) 條件為false,就跳出循環(huán)結(jié)構(gòu),執(zhí)行之后的語(yǔ)句蜒滩;如果循環(huán)條件為true,就執(zhí)行 循環(huán)體和疊加條件滨达,再重復(fù)藍(lán)色字體部分。
5.3:結(jié)構(gòu)特點(diǎn):do-while循環(huán)結(jié)構(gòu)初始化語(yǔ)句有且僅執(zhí)行一次俯艰,循環(huán)體和疊加條件至少執(zhí)行一 次捡遍,循環(huán)條件至少執(zhí)行一次。eg:public static void main(String[] args){ //獲得具有從鍵盤(pán)上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); //初始化語(yǔ)句 String result=""; do{ //循環(huán)體 System.out.println("編碼考試"); //循環(huán)疊加 System.out.println("考試是否合格竹握?(y/n)"); //從鍵盤(pán)上接收數(shù)據(jù)并存在變量中 result=input.next(); }while(!result.equals("y")); }
6.for VS while VS do-while
6.1:能用for循環(huán)解決的問(wèn)題都可以用while循環(huán)解決画株;能用while循環(huán)解決的問(wèn)題都可以用for 循環(huán)解決。一般解決先判斷后執(zhí)行啦辐,循環(huán)次數(shù)固定的重復(fù)性問(wèn)題谓传,首選for循環(huán)。
一般解決先判斷后執(zhí)行芹关,循環(huán)次數(shù)不固定的重復(fù)性問(wèn)題续挟,首選while循環(huán)。
6.2:能用for循環(huán)或者while循環(huán)解決的問(wèn)題侥衬,不一定能用do-while循環(huán)解決诗祸。
能用do-while循環(huán)解決的問(wèn)題跑芳,都可以用for循環(huán)或者while循環(huán)解決。
6.3:只要是有重復(fù)性的操作直颅,就要用循環(huán)結(jié)構(gòu)博个;只要是先執(zhí)行后判斷的重復(fù)性問(wèn)題就用do- while循環(huán)結(jié)構(gòu),先判斷后執(zhí)行功偿,循環(huán)次數(shù)固定的重復(fù)性問(wèn)題盆佣,首選for循環(huán),先判斷 后執(zhí)行械荷,循環(huán)次數(shù)不固定的重復(fù)性問(wèn)題罪塔,首選while循環(huán)
7.嵌套循環(huán)結(jié)構(gòu):在一個(gè)循環(huán)結(jié)構(gòu)的大括號(hào)中完整的包含了另一個(gè)循環(huán)結(jié)構(gòu)
7.1:循環(huán)結(jié)構(gòu)的嵌套可以是多層,嵌套要正確养葵。一般情況常用兩層嵌套的循環(huán)結(jié)構(gòu)征堪。
7.2:在嵌套循環(huán)結(jié)構(gòu)中,外層循環(huán)結(jié)構(gòu)循環(huán)一次关拒,內(nèi)層循環(huán)結(jié)構(gòu)要循環(huán)完佃蚜。(內(nèi)層循環(huán)其實(shí)是 外層循環(huán)的循環(huán)體中一部分)eg:public static void main(String[] args){ //獲得具有從鍵盤(pán)上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); //接收三個(gè)班 for(int j=1;j<=3;j++){ System.out.println("請(qǐng)輸入第"+j+"班的成績(jī)"); //從鍵盤(pán)上接收一個(gè)班四名學(xué)員的成績(jī) for(int i=1;i<=4;i++){ System.out.println("請(qǐng)輸入第"+i+"名學(xué)員的成績(jī)"); double score=input.nextDouble(); } } }
8.break:跳出結(jié)構(gòu)。只能用于switch結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中
9.1:break的作用:用在switch結(jié)構(gòu)中着绊,跳出switch結(jié)構(gòu)谐算。
用在循環(huán)結(jié)構(gòu)中,跳出當(dāng)前循環(huán)結(jié)構(gòu)归露。eg:public static void main(String[] args){ //獲得從鍵盤(pán)上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); for(int j=1;j<=3;j++){ System.out.println("請(qǐng)輸入第"+j+"班的成績(jī):"); for(int i=1;i<=4;i++){ System.out.println("請(qǐng)輸入第"+i+"名學(xué)員的成績(jī):"); double score=input.nextDouble(); //判斷成績(jī)是否符合要求,不符合要求停止當(dāng)前班級(jí)的錄入洲脂, //接著錄入下一個(gè)班 if(score>100||score<0){ break;//跳出內(nèi)層循環(huán)結(jié)構(gòu) } } System.out.println(); } }
9.2:break作標(biāo)記的用法:跳出作標(biāo)記的指定結(jié)構(gòu)
語(yǔ)法:標(biāo)記名 要跳出的結(jié)構(gòu);
break 標(biāo)記名;eg:public static void main(String[] args){ //獲得從鍵盤(pán)上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); a:for(int j=1;j<=3;j++){ System.out.println("請(qǐng)輸入第"+j+"班的成績(jī):"); for(int i=1;i<=4;i++){ System.out.println("請(qǐng)輸入第"+i+"名學(xué)員的成績(jī):"); double score=input.nextDouble(); //判斷成績(jī)是否符合要求剧包,如果不符合要求就終止錄入 if(score<0||score>100){ break a;//跳出標(biāo)記指定的外層循環(huán)結(jié)構(gòu) } } System.out.println(); } }
9.continue:只能用在循環(huán)結(jié)構(gòu)中恐锦。結(jié)束當(dāng)次循環(huán),進(jìn)入下一次循環(huán)
eg:public static void main(String[] args){ //獲得從鍵盤(pán)上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); for(int i=1;i<=4;i++){ System.out.println("請(qǐng)輸入第"+i+"名學(xué)員的成績(jī):"); double score=input.nextDouble(); //第一種:用continue實(shí)現(xiàn) if(score>100||score<0){ continue;//結(jié)束當(dāng)次循環(huán)疆液,進(jìn)入下一次循環(huán) } System.out.println("成績(jī)錄入成功"); /*第二種:用if結(jié)構(gòu)實(shí)現(xiàn) if(score<=100&&score>=0){ System.out.println("成績(jī)錄入成功"); }*/ } }
10.return:可以在方法的任何地方用一铅。作用:結(jié)束當(dāng)前方法;線束當(dāng)前的方法的同時(shí)返回一個(gè)結(jié)果
注意:return關(guān)鍵字后面不能直接寫(xiě)代碼堕油,是永遠(yuǎn)無(wú)法執(zhí)行的代碼會(huì)報(bào)錯(cuò)潘飘。
eg:public static void main(String[] args){ //獲得從鍵盤(pán)上接收數(shù)據(jù)的能力 Scanner input=new Scanner(System.in); for(int j=1;j<=3;j++){ System.out.println("請(qǐng)輸入第"+j+"班的成績(jī):"); for(int i=1;i<=4;i++){ System.out.println("請(qǐng)輸入第"+i+"名學(xué)員的成績(jī):"); double score=input.nextDouble(); //判斷成績(jī)是否符合要求,如果不符合要求就終止錄入 if(score<0||score>100){ return;//結(jié)束main方法 } } System.out.println(); } }