第四講控制結(jié)構(gòu)_第1頁(yè)
第四講控制結(jié)構(gòu)_第2頁(yè)
第四講控制結(jié)構(gòu)_第3頁(yè)
第四講控制結(jié)構(gòu)_第4頁(yè)
第四講控制結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第4講控制結(jié)構(gòu)語(yǔ)句和塊分支(選擇)結(jié)構(gòu)if、if…else、switch循環(huán)結(jié)構(gòu)while、for、do…while跳轉(zhuǎn)語(yǔ)句break、continue、returnJAVA語(yǔ)言的三種基本控制結(jié)構(gòu)語(yǔ)句程序中的語(yǔ)句可以分為兩種類型:簡(jiǎn)單語(yǔ)句和流程控制語(yǔ)句。Java中常用的有下面幾類語(yǔ)句:聲明語(yǔ)句,如:chara=‘A’;表達(dá)式語(yǔ)句,如:i++;System.out.println(“Hello”)分支語(yǔ)句,如:if…else、switch循環(huán)語(yǔ)句,如:while、do…while、for跳轉(zhuǎn)語(yǔ)句,如:break、continue異常語(yǔ)句,如:try-catch-finally空語(yǔ)句,如:;塊塊是用一對(duì)“{}”將零個(gè)或多個(gè)語(yǔ)句括起來(lái),就構(gòu)成一個(gè)塊(也稱復(fù)合語(yǔ)句)。程序中的類體及方法體也都是塊。classUseBlock{ publicstaticvoidmain(Stringargs[]) { inta=5; a+=8; { intb=6; b=b+a; System.out.println(a+""+b); } System.out.println(a+""+b); }}結(jié)合前面所學(xué)知識(shí)(變量的作用域),上面的程序有錯(cuò)誤嗎?分支結(jié)構(gòu)if單選結(jié)構(gòu)if(布爾表達(dá)式){語(yǔ)句塊;\\可以是一條或多條語(yǔ)句,在只有一條語(yǔ)句的情況下,可以不用“{}”}如:學(xué)生的成績(jī)studentGrade>=60分,則輸出“成績(jī)及格了~”if(studentGrade>=60)System.out.println(“成績(jī)及格了~”);分支結(jié)構(gòu)實(shí)例:求兩個(gè)數(shù)的最大值。(使用單分支結(jié)構(gòu))intn1=45326,n2=54321,max;max=n1;if(n2>=n1) max=n2;System.out.println(“max=”+max);分支結(jié)構(gòu)if-elseif(布爾表達(dá)式){語(yǔ)句塊1;\\可以是一條或多條語(yǔ)句,在只有一條語(yǔ)句的情況下,可以不用“{}”}else{語(yǔ)句塊2;}分支結(jié)構(gòu)如:學(xué)生的成績(jī)studentGrade>=60分,則輸出“恭喜!成績(jī)及格了~”,否則輸出“遺憾!成績(jī)不及格~”if(studentGrade>=60){ System.out.println(“恭喜!”); System.out.println(“成績(jī)及格了~”);}else{ System.out.println(“遺憾!”); System.out.println(“成績(jī)不及格~”);}分支結(jié)構(gòu)實(shí)例:求兩個(gè)數(shù)的最大值。(使用雙分支結(jié)構(gòu))intn1=45326,n2=54321,max;if(n1>=n2) max=n1;else max=n2;System.out.println(“max=”+max);分支結(jié)構(gòu)嵌套的if-else結(jié)構(gòu)if(布爾表達(dá)式1){

語(yǔ)句塊1;}elseif(布爾表達(dá)式2){語(yǔ)句塊2;}……elseif(布爾表達(dá)式N){語(yǔ)句塊N;}else{語(yǔ)句塊Else;}分支結(jié)構(gòu)如:學(xué)生的成績(jī)studentGrade>=90分,則輸出等級(jí)“A”,studentGrade>=80分,則輸出等級(jí)“B”,studentGrade>=70分,則輸出等級(jí)“C”,studentGrade>=60分,則輸出等級(jí)“D”,其他成績(jī),則輸出等級(jí)“F”。

if(studentGrade>=90) System.out.println(“A”);elseif(studentGrade>=80)

System.out.println(“B”);elseif(studentGrade>=70)

System.out.println(“C”);elseif(studentGrade>=60)

System.out.println(“D”);else

System.out.println(“F”);分支結(jié)構(gòu)switch多分支結(jié)構(gòu)switch(表達(dá)式){case值1:statements1;break;……casevalueN:statementsN;break;[default:defaultStatements;]}

將括號(hào)里“表達(dá)式”的值同每種情況列出的值做比較,若相等就執(zhí)行后面的語(yǔ)句;若不等,就執(zhí)行default語(yǔ)句。注意:“表達(dá)式”必須為byte、short、int或char類型。每個(gè)case語(yǔ)句后的值必須是與表達(dá)式類型兼容的特定的一個(gè)常量(它必須為一個(gè)常量,而不是變量),重復(fù)的case值是不允許的。通常在每一種case情況后都應(yīng)使用break語(yǔ)句。否則,第一個(gè)相等情況后面所有的語(yǔ)句都會(huì)被執(zhí)行,這種情況被稱為落空。分支結(jié)構(gòu)實(shí)例1:根據(jù)考試等級(jí)(“A”表示90分以上,“B”表示80~89分,“C”表示70~79分,“D”表示60~69分,“E”表示60分以下)輸出百分制分?jǐn)?shù)段。實(shí)例2:輸入一個(gè)月份,判斷是屬于一年中的哪個(gè)季節(jié)(春、夏、秋、冬)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是在滿足一定條件下反復(fù)執(zhí)行某段程序的流程結(jié)構(gòu),一個(gè)循環(huán)一般包括四個(gè)部分:循環(huán)的初始化:用來(lái)設(shè)置循環(huán)的一些初始條件。循環(huán)條件:一般為布爾表達(dá)式循環(huán)體:重復(fù)執(zhí)行的一段程序,可以是一個(gè)語(yǔ)句,也可以是一個(gè)語(yǔ)句塊迭代部分:在本次循環(huán)結(jié)束,下一次循環(huán)開(kāi)始前執(zhí)行的是循環(huán)變量遞變的語(yǔ)句。常用的形式為一個(gè)計(jì)數(shù)器遞增或遞減。循環(huán)結(jié)構(gòu)while語(yǔ)句(P96)while(條件表達(dá)式) { 循環(huán)體; }注意(1)沒(méi)有在循環(huán)體中提供使條件表達(dá)式最終變?yōu)榧俚恼Z(yǔ)句,這種循環(huán)就永遠(yuǎn)不會(huì)終止,稱為“死循環(huán)” (2)該循環(huán)體最少執(zhí)行多少次?循環(huán)結(jié)構(gòu)實(shí)例:計(jì)算1+2+3+…+100inti=1,sum=0;while(i<=100){ sum=sum+i; i++;}System.out.println(“1+2+3+…+100=”+sum);循環(huán)結(jié)構(gòu)實(shí)例:用while循環(huán)語(yǔ)句計(jì)算: 1!+2!+3!+…10!inti=1,p=1,sum=0;while(i<=10){ p=p*i; sum=sum+p; i++;}System.out.println(“1!+2!+3!+…10!=”+sum);循環(huán)結(jié)構(gòu)do-while語(yǔ)句(P133)do{

循環(huán)體;}while(條件表達(dá)式);注意(1)while(條件表達(dá)式)后有“;” (2)該循環(huán)體至少被執(zhí)行1次,這是和while的最大區(qū)別。故一般稱while循環(huán)為“當(dāng)型”循環(huán)(先判斷后執(zhí)行);do-while循環(huán)為“直到型”循環(huán)(先執(zhí)行后判斷)。循環(huán)結(jié)構(gòu)實(shí)例:將鍵盤(pán)輸入的數(shù)據(jù)累加求和,直到輸入0為止。BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));Strings;inti,sum=0;System.out.println("plaeseinputanumber,input0tostop"); do { s=br.readLine(); i=Integer.parseInt(s); sum=sum+i; System.out.println("thesumis:"+sum); }while(i!=0);循環(huán)結(jié)構(gòu)for語(yǔ)句(P126)

for(初始化;循環(huán)繼續(xù)條件;增量){

語(yǔ)句;}For結(jié)構(gòu)應(yīng)用舉例(課本P129)注意:for語(yǔ)句中的循環(huán)變量在for結(jié)構(gòu)頭的初始化部分定義時(shí),在此結(jié)構(gòu)外使用該循環(huán)變量是一個(gè)語(yǔ)法錯(cuò)誤。循環(huán)結(jié)構(gòu)實(shí)例:計(jì)算1+2+3+…+100 計(jì)算1!+2!+3!+…10!

計(jì)算2+4+6+…+100循環(huán)結(jié)構(gòu)【例】求1000之內(nèi)的所有水仙花數(shù)。所謂水仙花數(shù),是指一個(gè)三位數(shù),它的各位數(shù)字的立方和等于這個(gè)數(shù)本身。(如:371)

程序分析:用for循環(huán)每一次循環(huán)檢查100到999中的一個(gè)三位數(shù)n,取出n的個(gè)位、十位和百位分別存入k,j,i三個(gè)整形變量中。然后利用系統(tǒng)定義好的方法Math.pow()計(jì)算i,j,k的三次方并相加,若得到的和等于n,則輸出這個(gè)水仙花數(shù),否則n加1進(jìn)入下一次循化。循環(huán)結(jié)束時(shí)將得到所有的水仙花數(shù)。其中用m計(jì)算水仙花數(shù)的當(dāng)前找到個(gè)數(shù)。循環(huán)結(jié)構(gòu)publicclassNarcissus{publicstaticvoidmain(Stringargs[]){ inti,j,k,m=1; for(intn=100;n<1000;n++){ i=n/100; j=(n-i*100)/10; k=n%10; if((Math.pow(i,3)+Math.pow(j,3)+Math.pow(k,3))==n) { System.out.println("找到第"+m+++"水仙花數(shù):"+n); }}}}循環(huán)結(jié)構(gòu)下列程序的輸出結(jié)果是什么?classTuXing{publicstaticvoidmain(Stringargs[]){for(inti=1;i<=5;i++){for(intj=1;j<=5-i;j++){System.out.print("");}for(intk=1;k<=2*i-1;k++){System.out.print("*");}System.out.println();}}}循環(huán)結(jié)構(gòu)【例】求3~200之間的所有素?cái)?shù)。素?cái)?shù)是只能被1和該數(shù)本身整除的數(shù)。publicclassPrimeNumber{publicstaticvoidmain(Stringargs[]){System.out.println("**3到200之間的所有素?cái)?shù)**");intn=0;for(inti=3;i<=200;i+=2){intk=(int)Math.sqrt(i);booleanisPrime=true;for(intj=2;j<=k;j++){if(i%j==0)isPrime=false;}if(isPrime){System.out.print(""+i);n++;if(n%10==0)System.out.println();}}}}三種循環(huán)語(yǔ)句的比較:三種循環(huán)都可以用來(lái)處理同一個(gè)問(wèn)題,一般可以相互替代。while和do-while循環(huán)的循環(huán)體中應(yīng)包括使循環(huán)趨于結(jié)束的語(yǔ)句。for語(yǔ)句功能更強(qiáng)大。用while和do-while循環(huán)時(shí),循環(huán)變量初始化操作應(yīng)在while和do-while語(yǔ)句之前完成,而for語(yǔ)句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的初始化。當(dāng)循環(huán)次數(shù)明確時(shí),用for、while比較方便;當(dāng)不肯定時(shí)就用while或do-while。

break在前面的switch結(jié)構(gòu)中,break語(yǔ)句終止switch結(jié)構(gòu)體語(yǔ)句的執(zhí)行,跳到switch結(jié)構(gòu)后面的語(yǔ)句執(zhí)行。同樣,在循環(huán)結(jié)構(gòu)中,break語(yǔ)句結(jié)束循環(huán)語(yǔ)句的執(zhí)行(提前結(jié)束),跳到循環(huán)結(jié)構(gòu)后面的語(yǔ)句執(zhí)行。break如求200~300之間的所有素?cái)?shù)并輸出。(PrimeNumber2.java)System.out.println("**200-300**");inti,j;for(i=200;i<=300;i+=1){

for(j=2;j<=i-1;j++) { if(i%j==0)

break;}if(j>i-1){System.out.print(""+i); }}帶標(biāo)號(hào)的break帶標(biāo)號(hào)的break語(yǔ)句從標(biāo)號(hào)所標(biāo)記的語(yǔ)句塊中跳出來(lái),直接執(zhí)行標(biāo)號(hào)語(yǔ)句塊后面的語(yǔ)句。注意:break語(yǔ)句必須包含在標(biāo)號(hào)所標(biāo)記的語(yǔ)句塊內(nèi)標(biāo)號(hào)名可以是任何合法的標(biāo)識(shí)符帶標(biāo)號(hào)的breakBreakDemo.javabooleanb=true; first:{ second:{ third:{ System.out.println("1"); if(b) breaksecond; System.out.println("2");

} System.out.println("3");

} System.out.println("4");

}continuecontinue語(yǔ)句只用在for、while、do-while循環(huán)體中,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論