第四講控制結構_第1頁
第四講控制結構_第2頁
第四講控制結構_第3頁
第四講控制結構_第4頁
第四講控制結構_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

語句塊1;}elseif(布爾表達式2){語句塊2;}……elseif(布爾表達式N){語句塊N;}else{語句塊Else;}分支結構如:學生的成績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”);分支結構switch多分支結構switch(表達式){case值1:statements1;break;……casevalueN:statementsN;break;[default:defaultStatements;]}

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

循環體;}while(條件表達式);注意(1)while(條件表達式)后有“;” (2)該循環體至少被執行1次,這是和while的最大區別。故一般稱while循環為“當型”循環(先判斷后執行);do-while循環為“直到型”循環(先執行后判斷)。循環結構實例:將鍵盤輸入的數據累加求和,直到輸入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);循環結構for語句(P126)

for(初始化;循環繼續條件;增量){

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

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

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

break在前面的switch結構中,break語句終止switch結構體語句的執行,跳到switch結構后面的語句執行。同樣,在循環結構中,break語句結束循環語句的執行(提前結束),跳到循環結構后面的語句執行。break如求200~300之間的所有素數并輸出。(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); }}帶標號的break帶標號的break語句從標號所標記的語句塊中跳出來,直接執行標號語句塊后面的語句。注意:break語句必須包含在標號所標記的語句塊內標號名可以是任何合法的標識符帶標號的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循環體中,

溫馨提示

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

評論

0/150

提交評論