Java程序設(shè)計:第4章 循環(huán)結(jié)構(gòu)程序設(shè)計
《Java程序設(shè)計:第4章 循環(huán)結(jié)構(gòu)程序設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《Java程序設(shè)計:第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第4章 循環(huán)結(jié)構(gòu)程序設(shè)計Java程序設(shè)計程序設(shè)計2學(xué)習(xí)目標(biāo)l 熟練掌握while、do-while、for語句基本結(jié)構(gòu)的概念和使用方法l 掌握循環(huán)嵌套的概念和使用l 掌握正確使用break和continue語句Java程序設(shè)計程序設(shè)計34.1 循環(huán)結(jié)構(gòu)解決的問題l 實際編程中有很多需要多次重復(fù)相同或相似的操作的問題,幾乎每一種高級程序設(shè)計語言都提供循環(huán)控制語句來處理重復(fù)操作。如:向計算機(jī)系統(tǒng)輸入100個學(xué)生的檔案,重復(fù)進(jìn)行100次輸入操作。為全班30個學(xué)生分別計算其5門課的平均成績,重復(fù)進(jìn)行30次求平均數(shù)的算術(shù)運算。求1 + 2 + 3 + + 100的和,重復(fù)進(jìn)行100次加法操作。檢查100
2、名畢業(yè)生是否具有獲得學(xué)位證書的資格,重復(fù)進(jìn)行100次判斷操作。l Java語言提供標(biāo)準(zhǔn)的三種循環(huán)控制語句:while語句、do-while語句和for語句。Java程序設(shè)計程序設(shè)計44.1 循環(huán)結(jié)構(gòu)解決的問題4.2 while語句l while循環(huán)語句的語法結(jié)構(gòu)如下: while(循環(huán)繼續(xù)條件) 循環(huán)語句l while循環(huán)的執(zhí)行流程Java程序設(shè)計程序設(shè)計54.2 while語句l while語句使用時需要注意的方面(1)while語句的循環(huán)體只能包含一條語句,當(dāng)循環(huán)體需要多條語句組成時,使用語句塊。 while(i100) while(i100) i = i + 1; sum = sum +
3、 i; i = i + 1; (2)循環(huán)必須在重復(fù)有限的次數(shù)后結(jié)束,因此要求循環(huán)體中應(yīng)該包含使循環(huán)繼續(xù)條件最終變?yōu)閒alse的語句。 while(i100) i = i + 1; Java程序設(shè)計程序設(shè)計64.2 while語句例4-1:求1 + 2 + 3 + + 100的值,使用while語句。/文件名:GaussProblemWithWhile.javapublic class GaussProblemWithWhile public static void main(String args) int i = 1; /變量i存儲參加累加的數(shù),初始值為1 int sum = 0; /變量s
4、um存儲和,初始值為0 while (i = 100) sum = sum + i; /累加運算 i+; /i增加1,為下次累加準(zhǔn)備,同時也使循環(huán)繼續(xù)條件最終會變成false /循環(huán)結(jié)束后,執(zhí)行后面語句,輸出結(jié)果 System.out.println(sum = + sum); Java程序設(shè)計程序設(shè)計74.3 do-while語句l do-while循環(huán)語句的語法格式: do 循環(huán)語句 while(循環(huán)繼續(xù)條件);l do-while循環(huán)的執(zhí)行流程Java程序設(shè)計程序設(shè)計84.3 do-while語句l do-while語句使用時需要注意的方面(1)注意do-while語句的最后的分號表示語
5、句結(jié)束,不能省略。 (2)每次迭代都是先執(zhí)行循環(huán)體,再計算循環(huán)繼續(xù)條件的值,若值為true,則執(zhí)行循環(huán)體;若值為false,則整個循環(huán)結(jié)構(gòu)終止,程序繼續(xù)執(zhí)行do-while語句后面的語句。 do sum = sum + i; i+; while (i = 100);Java程序設(shè)計程序設(shè)計94.4 for語句l for循環(huán)語句的語法格式: for(初始操作; 循環(huán)繼續(xù)條件; 每次迭代后的操作)l for循環(huán)的執(zhí)行流程Java程序設(shè)計程序設(shè)計104.4 for語句l for語句執(zhí)行流程對其各個組成部分進(jìn)行說明(1)for語句總是從初始操作開始執(zhí)行的。改部分可以聲明變量,但是這些變量只能在for語
6、句內(nèi)部使用;主要完成循環(huán)變量的初始化。(2)循環(huán)繼續(xù)條件是boolean類型的表達(dá)式。在初始操作部分執(zhí)行完成或每一次迭代結(jié)束后需要計算該表達(dá)式的值,若為true則循環(huán)繼續(xù),否則終止整個循環(huán)結(jié)構(gòu)。(3)循環(huán)體也只能有一條語句,需要多條語句時使用語句塊。(4)每次迭代后的操作在循環(huán)體每次迭代后都要執(zhí)行。主要完成循環(huán)變量值的修改。Java程序設(shè)計程序設(shè)計114.4 for語句l 例4-3:求1 + 2 + 3 + + 100的值,使用for語句。/文件名:GaussProblemWithFor.javapublic class GaussProblemWithFor public static vo
7、id main(String args) int sum = 0; for (int i = 1; i = 100; i+) sum += i; System.out.println(sum = + sum); Java程序設(shè)計程序設(shè)計124.5 循環(huán)語句的比較l while循環(huán)和for循環(huán)的循環(huán)繼續(xù)條件的檢查是在循環(huán)體執(zhí)行之前進(jìn)行的,稱為前置檢測循環(huán),循環(huán)體執(zhí)行次數(shù)最少為0次;l do-while循環(huán)的循環(huán)繼續(xù)條件的檢查是在循環(huán)體執(zhí)行之后進(jìn)行的,稱為后置檢測循環(huán),循環(huán)體執(zhí)行次數(shù)最少為1次。l 三種循環(huán)語句都可以用來處理相同的需要進(jìn)行重復(fù)操作的問題,一般情況下三者之間可以相互替換。Java程序
8、設(shè)計程序設(shè)計134.5 循環(huán)語句的比較編寫程序處理循環(huán)結(jié)構(gòu)時,選擇哪一種循環(huán)語句沒有嚴(yán)格規(guī)定。常用規(guī)則如下:l 如果循環(huán)次數(shù)已經(jīng)知道的情況使用for語句;l 循環(huán)次數(shù)不確定的情況使用while語句;l 如果需要在檢查循環(huán)繼續(xù)條件之前執(zhí)行循環(huán)體,則使用do-while語句。Java程序設(shè)計程序設(shè)計144.5 循環(huán)語句的比較l 三種循環(huán)語句中do-while語句的后面必須使用分號結(jié)束。同時必須注意for語句和while語句循環(huán)繼續(xù)條件的括號后面不能加分號,如果不留意加了分號,可能不會有語法錯誤,但程序的執(zhí)行與預(yù)期的結(jié)果就不同了。4.6 循環(huán)嵌套l 一個循環(huán)語句的循環(huán)體內(nèi)包含另一個完整的循環(huán)結(jié)構(gòu),稱
9、為循環(huán)的嵌套。l 循環(huán)的嵌套可以有很多層,一個循環(huán)的內(nèi)嵌一層循環(huán)叫雙層循環(huán)嵌套,簡稱雙重循環(huán);如果在雙重循環(huán)的內(nèi)層循環(huán)中再內(nèi)嵌一層循環(huán)就形成了三重循環(huán)。循環(huán)嵌套在理論上來說可以是無限的,可以形成多重循環(huán)。Java程序設(shè)計程序設(shè)計164.6 循環(huán)嵌套l 例4-4:在命令行窗口輸出九九乘法表。Java程序設(shè)計程序設(shè)計174.6 循環(huán)嵌套程序源碼:/文件名:MultiplicationTable.javapublic class MultiplicationTable public static void main(String args) int i, j; /表示乘數(shù)、j表示被乘數(shù) for (i
10、 = 1; i = 9; i+) /外層循環(huán)控制輸出行,第i次循環(huán)輸出第i行 for (j = 1; j = i; j+) /內(nèi)層循環(huán)控制輸出乘法等式,第i行有i個等式 System.out.printf(%d*%d=%2d , i, j, i * j); /輸出一個乘法等式 System.out.println(); /一行輸出結(jié)束,輸出換行 Java程序設(shè)計程序設(shè)計184.7 break和continue語句l 循環(huán)語句在執(zhí)行時,預(yù)先設(shè)定的循環(huán)繼續(xù)條件的值為true循環(huán)體就完整執(zhí)行一次,直到該條件值變?yōu)閒alse時終止循環(huán),這稱為循環(huán)的正常執(zhí)行。程序設(shè)計過程中有時會需要提前終止循環(huán),或者跳
11、過某次迭代中的部分語句直接進(jìn)入下一次迭代。break語句和continue語句就是用于提前終止循環(huán)或提前結(jié)束循環(huán)的某次迭代。Java程序設(shè)計程序設(shè)計194.7.1 break語句l break語句可以用于switch語句和循環(huán)語句中用于跳出switch語句或者提前終止循環(huán)。break語句用于循環(huán)語句的語法格式如下: break 語句標(biāo)號;l 方括號表示其中的語句標(biāo)號是可選的,語句標(biāo)號的定義形式是一個合法的Java標(biāo)識符后面加上一個冒號,通常放在循環(huán)語句的前面,用以指明它代表該循環(huán)語句。Java程序設(shè)計程序設(shè)計204.7.1 break語句Java程序設(shè)計程序設(shè)計214.7.1 break語句J
12、ava程序設(shè)計程序設(shè)計224.7.1 break語句Java程序設(shè)計程序設(shè)計23例4-5:判斷正整數(shù)是否為質(zhì)數(shù)。從鍵盤輸入一個正整數(shù),判斷并輸出是否為質(zhì)數(shù)。 解題思路:根據(jù)質(zhì)數(shù)的定義,除1和本身外不能被其他整數(shù)整除的整數(shù)。因此對任意的正整數(shù)n,只需要從2開始到n-1結(jié)束,依次嘗試n是否被某個數(shù)整除即可??梢韵燃僭O(shè)n是質(zhì)數(shù),若找到一個數(shù)i使n%i=0,則確定n不是質(zhì)數(shù),此時從i+1到n-1的數(shù)就不需要嘗試了,可以提前結(jié)束循環(huán)。4.7.1 break語句Java程序設(shè)計程序設(shè)計24import java.util.Scanner;public class Prime public static v
13、oid main(String args) Scanner input = new Scanner(System.in); int n = input.nextInt(); boolean isPrime = true; /假設(shè)n是質(zhì)數(shù) for (int i = 2; i n; i+) if (n % i = 0) /如果條件成立,表示找到可以整除的數(shù) isPrime = false; /確定n不是質(zhì)數(shù) break; /提前結(jié)束循環(huán) if (isPrime) System.out.println(n + 是質(zhì)數(shù).); else System.out.println(n + 不是質(zhì)數(shù).); 4.
14、7.2 continue語句Java程序設(shè)計程序設(shè)計25 continue語句實現(xiàn)提前結(jié)束循環(huán)的本次迭代,直接進(jìn)入下一次迭代,其語法形式為: continue 語句標(biāo)號; continue語句的語句標(biāo)號使用方法與break語句相同。continute語句的作用是提前結(jié)束語句標(biāo)號指明的循環(huán)的本次迭代,即跳過continue語句后面直到循環(huán)體末尾的所有語句,直接去重新判斷循環(huán)繼續(xù)條件,再決定是否開始下一次迭代。省略語句標(biāo)號時針對包括continue語句的最內(nèi)層循環(huán)。4.7.2 continue語句Java程序設(shè)計程序設(shè)計264.7.2 continue語句Java程序設(shè)計程序設(shè)計274.7.2 c
15、ontinue語句Java程序設(shè)計程序設(shè)計28l 例4-7:輸出100至200之間不能被7整除的數(shù)。 解題思路:很明顯需要從100開始到200為止,依次對每個整數(shù)進(jìn)行檢查能否被7整除,如果能夠被7整除則跳過輸出,直接檢查下一個數(shù);不能整除時輸出。其中跳過輸出的操作可以由continue語句完成。4.7.2 continue語句Java程序設(shè)計程序設(shè)計29程序源碼:/文件名:OutputNumber.javapublic class OutputNumber public static void main(String args) /依次檢查100200的每個數(shù) for (int i = 100
16、; i = 200; i+) if (i % 7 = 0) continue; /如果被7整除,跳過下面的輸出語句 System.out.println(i); 4.8 循環(huán)結(jié)構(gòu)程序舉例Java程序設(shè)計程序設(shè)計30例4-8:求Fibonacci數(shù)列的前20個數(shù)。該數(shù)列的特點:前兩個數(shù)F1和F2均為1,從第3個數(shù)開始,F(xiàn)n=Fn-1+Fn-2。 解題思路:要解決該問題,很明顯需要使用循環(huán)結(jié)構(gòu),循環(huán)體中重復(fù)執(zhí)行的是利用前2個數(shù)之和計算后面數(shù)。設(shè)f1表示第1個數(shù),f2表示第2個數(shù),則f3=f1+f2為第3個數(shù);然后將f2賦給f1,f3賦給f2,則f1表示第2個數(shù),f2表示第3個數(shù),則f3=f1+f2
17、為第4個數(shù),依次類推。/文件名:文件名:Fibonacci.javapublic class Fibonacci public static void main(String args) int f1 = 1, f2 = 1, f3; /先輸出前先輸出前2個數(shù)個數(shù) System.out.println(f1); System.out.println(f2); /循環(huán)計算并輸出后面循環(huán)計算并輸出后面18個數(shù)個數(shù) for (int i = 0; i 18; i+) f3 = f1 + f2; /計算下個數(shù)計算下個數(shù) System.out.println(f3); /輸出下個數(shù)輸出下個數(shù) f1 =
18、f2; f2 = f3; /為下次計算準(zhǔn)備為下次計算準(zhǔn)備 4.8 循環(huán)結(jié)構(gòu)程序舉例Java程序設(shè)計程序設(shè)計32例4-9:求用數(shù)字09可以組成多少個沒有重復(fù)的三位奇數(shù),并輸出這些三位數(shù)。解題思路:該問題的解決需要將所有滿足條件的可能情況全部列出來,需要用循環(huán)嵌套來處理,對百位、十位、個位分別采用循環(huán)。按照題意,百位數(shù)字的變化范圍是1-9,十位數(shù)字的變化范圍是0-9,個位數(shù)字的變化范圍是1-9,由于題目要求是奇數(shù),所以個位的處理每次遞增為2。public class DigitCombination public static void main(String args) int i, j, k;
19、 int counter = 0; /外層循環(huán)控制百位數(shù)的變化外層循環(huán)控制百位數(shù)的變化 for (i = 1; i = 9; i+) /中間循環(huán)控制十位數(shù)變化中間循環(huán)控制十位數(shù)變化 for (j = 0; j = 9; j+) if (i != j) /只有在百位數(shù)與十位數(shù)不同時才考慮個位數(shù)只有在百位數(shù)與十位數(shù)不同時才考慮個位數(shù) /最內(nèi)層循環(huán)控制個位數(shù)變化最內(nèi)層循環(huán)控制個位數(shù)變化 for (k = 1; k = 1e-6); System.out.println(PI= + (pi * 4); 課后工作l 復(fù)習(xí)本章內(nèi)容l 4.6 編寫程序,輸入兩個整數(shù),計算并輸出它們的最大公約數(shù)和最小公倍數(shù)。l 4.7編寫程序,輸入一個整數(shù),顯示它的所有的素數(shù)因子。例如,輸入整數(shù)120,輸出應(yīng)該為:2,2,2,3,5。l 4.8 編寫程序,輸入一個整數(shù)n代表行數(shù),使用循環(huán)嵌套輸出如下的金字塔形數(shù)字圖案的前n行。l 4.10 一個整數(shù)如果恰好等于它的因子之和,則稱為“完數(shù)”。編寫程序輸出1到1000之間所有的完數(shù)。Java程序設(shè)計程序設(shè)計36
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。