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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

程序分析:用for循環(huán)每一次循環(huán)檢查100到999中的一個三位數(shù)n,取出n的個位、十位和百位分別存入k,j,i三個整形變量中。然后利用系統(tǒng)定義好的方法Math.pow()計算i,j,k的三次方并相加,若得到的和等于n,則輸出這個水仙花數(shù),否則n加1進(jìn)入下一次循化。循環(huán)結(jié)束時將得到所有的水仙花數(shù)。其中用m計算水仙花數(shù)的當(dāng)前找到個數(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之間的所有素數(shù)。素數(shù)是只能被1和該數(shù)本身整除的數(shù)。publicclassPrimeNumber{publicstaticvoidmain(Stringargs[]){System.out.println("**3到200之間的所有素數(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)語句的比較:三種循環(huán)都可以用來處理同一個問題,一般可以相互替代。while和do-while循環(huán)的循環(huán)體中應(yīng)包括使循環(huán)趨于結(jié)束的語句。for語句功能更強大。用while和do-while循環(huán)時,循環(huán)變量初始化操作應(yīng)在while和do-while語句之前完成,而for語句可以在表達(dá)式1中實現(xiàn)循環(huán)變量的初始化。當(dāng)循環(huán)次數(shù)明確時,用for、while比較方便;當(dāng)不肯定時就用while或do-while。

break在前面的switch結(jié)構(gòu)中,break語句終止switch結(jié)構(gòu)體語句的執(zhí)行,跳到switch結(jié)構(gòu)后面的語句執(zhí)行。同樣,在循環(huán)結(jié)構(gòu)中,break語句結(jié)束循環(huán)語句的執(zhí)行(提前結(jié)束),跳到循環(huán)結(jié)構(gòu)后面的語句執(zhí)行。break如求200~300之間的所有素數(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)號的break帶標(biāo)號的break語句從標(biāo)號所標(biāo)記的語句塊中跳出來,直接執(zhí)行標(biāo)號語句塊后面的語句。注意:break語句必須包含在標(biāo)號所標(biāo)記的語句塊內(nèi)標(biāo)號名可以是任何合法的標(biāo)識符帶標(biā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語句只用在for、while、do-while循環(huán)體中,

溫馨提示

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

最新文檔

評論

0/150

提交評論