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