循環(huán)結(jié)構(gòu)while、do-while、for_第1頁
循環(huán)結(jié)構(gòu)while、do-while、for_第2頁
循環(huán)結(jié)構(gòu)while、do-while、for_第3頁
循環(huán)結(jié)構(gòu)while、do-while、for_第4頁
循環(huán)結(jié)構(gòu)while、do-while、for_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Top1.循環(huán)結(jié)構(gòu)(while、do.while、for)1 .循環(huán)結(jié)構(gòu)(while. do.“while. for)1.1. 什么是循環(huán)結(jié)構(gòu)在日常生活中,會有很多需要反復(fù)執(zhí)行的事情,比如:每一年的4個(gè)季節(jié),每 一周的7天,每日的3餐,打印機(jī)每份文檔打印50份,一圈跑道400米跑3圈, 都是在反復(fù)執(zhí)行的。再看軟件系統(tǒng)中的需求:問題1 :輸出100行語句,每行語句都一樣,即: 行動(dòng)是成功的階梯,行動(dòng)越多,登得越高! 行動(dòng)是成功的階梯,行動(dòng)越多,登得越高! 行動(dòng)是成功的階梯,行動(dòng)越多,登得越高!.問題2 :輸出100行語句,每行語句都類似,即: 第L行動(dòng)是成功的階梯,行動(dòng)越多,登得越高! 第2彳亍

2、動(dòng)是成功的階梯,行動(dòng)越多,登得越高! 第3彳亍動(dòng)是成功的階梯,行動(dòng)越多,登得越高! 第100彳亍動(dòng)是成功的階梯,行動(dòng)越多,登得越高問題3 :計(jì)算1至I50乘以8.88的結(jié)果 1x 8.88 =8.88 2x8.88=17.76 3x8.88=26.64 4x8.88=35.52 50x 8.88 =444諸如此類問題都是在反復(fù)執(zhí)行的,在軟件系統(tǒng)中可以通過循環(huán)這種語法結(jié)構(gòu)來 解決。循環(huán)是程序設(shè)計(jì)語言中反復(fù)執(zhí)行某些代碼的一種計(jì)算機(jī)處理過程,是一組 相同或相似語句被有規(guī)律的重復(fù)性執(zhí)行。對于循環(huán)來說,需要考慮兩個(gè)要素,其一要素為循環(huán)體,也就是被反復(fù)執(zhí)行 的相同或相似的語句,其二要素為循環(huán)的條件,也就是

3、循環(huán)得以繼續(xù)執(zhí)行下去的條 件,常常以循環(huán)次數(shù)的方式體現(xiàn)。常用的循環(huán)結(jié)構(gòu)有:while、do-while、for。1.2. while 語句1.2.1. while語句的執(zhí)行邏輯while語句是循環(huán)的一種常見語法結(jié)構(gòu),語法如下:1. while ( boolean 表達(dá)式)語句塊;2. )while語句的執(zhí)行過程為,首先計(jì)算boolean表達(dá)式的值,而后進(jìn)行判斷,若值為true則執(zhí)行語句塊,語句塊執(zhí)行完后再次判斷boolean表達(dá)式的值,如果為 true則繼續(xù)執(zhí)行語句塊,如此循環(huán)往復(fù),直到boolean表達(dá)式的值為false時(shí)退 出while循環(huán)而執(zhí)行while之后的語句。1.2.2. whil

4、e語句的流程while語句的流程圖如圖-11所示,需要注意的是,一般情況下,循環(huán)操作 中會存在使得循環(huán)條件不滿足的可能性,否則該循環(huán)將成為“死循環(huán)”。“死循環(huán)” 意味著會一直執(zhí)行循環(huán)體操作,循環(huán)后面的語句永遠(yuǎn)不會被執(zhí)行,"死循環(huán)在軟 件系統(tǒng)中是需要避免的。圖-111.2.3. while語句用于處理循環(huán)邏輯while語句在實(shí)際應(yīng)用中應(yīng)用比較廣泛,通過如下示例體會while語句的執(zhí)行邏輯:1. int age = 1;2. while (age<=100) 3. System. out. println(“馬上有錢”);4. age+;5. )上面的語句執(zhí)行過程如下,首先聲明整型

5、變量age并賦初始值為1,而后判斷 age是否小于等于100,條件為真,輸出"馬上有錢并將age的值增1變?yōu)?, 再次判斷條件,此時(shí)age為2,依然小于100,再一次輸出“馬上有錢”并將age 的值再增1變?yōu)?,以此類推,直到age等于101時(shí),判斷條件為false,循環(huán)結(jié) 束。1.2.4. 使用break語句跳出循環(huán)break用在循環(huán)體中用于退出循環(huán)結(jié)構(gòu)??慈缦率纠a:1. int x = 0;2. while ( x < 10 ) 3. if ( 5 = x )4. 5. break;6. )7. System. out. println(x);8. x + + ;9.

6、)分析上面的代碼得出結(jié)論輸出結(jié)果為0 1 2 3 4,因?yàn)楫?dāng)x等于5時(shí)執(zhí)行break 語句直接退出循環(huán)結(jié)構(gòu)了,即if語句塊后面的輸出x的值以及x+不再被執(zhí)行。1.3. do-while ,語句1.3.1. do-while語句的執(zhí)行邏輯do-while語句也是循環(huán)的一種常見語法結(jié)構(gòu),語法如下:1. do 2. 語句塊3. while ( boolean 表達(dá)式);do-while語句的執(zhí)行過程為,先執(zhí)行語句塊,再判斷boolean表達(dá)式,如果 為true則再次執(zhí)行語句塊,如此循環(huán)往復(fù),直到boolean表達(dá)式的值為false時(shí) 止。也就是說,do-while語句,無論boolean表達(dá)式是否為

7、true,都先執(zhí)行一次 語句塊。1.3.2. do-while語句的流程圖do-while語句的流程圖如圖-12所示,與while語句一樣,do-while語句也要避免“死循環(huán)”的發(fā)生。圖-121.3.3. do-while語句用于處理循環(huán)邏輯do-while語句在實(shí)際應(yīng)用中應(yīng)用比較廣泛,通過如下示例體會do-while語句的執(zhí)行邏輯:1. int pwd ;2. do3. System. out. print (“請輸入密碼”);4. pwd = scanner. nextInt ();5. while ( 123 != pwd);上面的語句執(zhí)行過程如下,首先聲明整型變量pwd,在do語句中

8、提示"請輸 入密碼'接收用戶輸入的數(shù)據(jù)賦給pwd,而后判斷123是否不等于pwd,若為 true則執(zhí)行do語句塊,以此類推,直到123等于pwd時(shí),循環(huán)結(jié)束。1.3.4. while 和 do-while 語句的區(qū)別while與do-while都是用于執(zhí)行循環(huán)結(jié)構(gòu)的語句,區(qū)別在于,while循環(huán)先判 斷再執(zhí)行,而do-while循環(huán)先執(zhí)行一次,再判斷。那么,當(dāng)初始情況不滿足循環(huán) 條件時(shí),while循環(huán)就一次都不會執(zhí)行,而do-while循環(huán)不管任何情況都至少會 執(zhí)行一次。注意:while和do-while語句的不同僅僅體現(xiàn)在第一次就不滿足條件的循環(huán) 中;如果不是這樣的情況,w

9、hile與do-while可以互換。請看如下兩段示例程序:1. 示例1: while循環(huán)方式2. int pwd = 0;3. while ( 123 != pwd)4. System. out. print (“密碼:”);5. pwd = scanner. nextInt ();6. 7. 示例2: do-while循環(huán)方式8. intpwd ;9. do10. System. out. print (“密碼”);11. pwd = scanner. nextInt();12. while ( 123 != pwd);分析示例1與示例2得出結(jié)論,運(yùn)行結(jié)果完全一樣。這是因?yàn)閮啥未a第一次 的

10、while條件都滿足,此時(shí)while與do-whlie可以互換,所以結(jié)果完全一樣。1.4. for 語句1.4.1. 考慮如下循環(huán)問題的相同之處請考慮如下三個(gè)題目的相似之處:1 .計(jì)算從1加至100的值;2 .計(jì)算 1 + 1/3+1/5+. + 1/999 ;3 .找出從第1號學(xué)員到第500號學(xué)員中成績大于90的學(xué)員。通過上面的問題可以看出,如上三個(gè)題目都是在有規(guī)律的重復(fù)執(zhí)行某個(gè)操作, 在程序中考慮使用循環(huán)結(jié)構(gòu)來解決。首先需要先找到前面介紹的循環(huán)變量,此循環(huán)變量 在每一次的循環(huán)中有規(guī)律的發(fā)生變化,并且常常作為判斷是否繼續(xù)循環(huán)的條件。首先,看第1個(gè)題目,設(shè)計(jì)循環(huán)變量i,i的值為1,2,100,

11、即:從1開始, 每次增1。第二個(gè)題目,設(shè)計(jì)循環(huán)變量i , i的值為1,3,5,,999,即:從1開始, 每次增2。第三個(gè)題目,設(shè)計(jì)循環(huán)變量i , i的值為1,2,500,即:從1開始,每 次增1。通過上面的分析,可以看出,如上的循環(huán)都是固定次數(shù)的循環(huán),這種情況,優(yōu) 先考慮使用for語句來實(shí)現(xiàn)。1.4.2. for語句的執(zhí)行邏輯for語句是循環(huán)中最最常用的一種方式。for循環(huán)用于將某個(gè)語句或語句塊重復(fù)執(zhí)行預(yù)定次數(shù)的情形。語法如下:1. for (表達(dá)式1;表達(dá)式2;表達(dá)式3 ) 2. 語句塊(循環(huán)體)3. )可以看出,for循環(huán)的三個(gè)表達(dá)式之間通過分號;進(jìn)行分隔,其執(zhí)行邏輯如下 所示:1 .計(jì)算

12、表達(dá)式1的值,通常為循環(huán)變量賦初值;2 .計(jì)算表達(dá)式2 (表達(dá)式2為邏輯表達(dá)式)的值,即判斷循環(huán)條件是否為真,若值為真 則執(zhí)行循環(huán)體一次(語句塊),否則跳出循環(huán);3 .執(zhí)行循環(huán)體;4 .計(jì)算表達(dá)式3的值,此處通常寫更新循環(huán)變量的賦值表達(dá)式;5 .計(jì)算表達(dá)式2的值,若值為true則執(zhí)行循環(huán)體,否則跳出循環(huán);6 .如此循環(huán)往復(fù),直到表達(dá)式2的值為false。1.4.3. for語句的流程圖for語句流程圖如圖-1所示:圖-1簡單示例如下:1. for ( int i = 1 ; i <= 10 ; i + + ) 2. System. out. println( i );3. )如上程序的輸

13、出結(jié)果為:1 2 3 4 5 6 7 8 9 10分析如上程序的執(zhí)行過程:首先,初始化i的值為1,判斷i是否小于等于10 , 結(jié)果為true,其次,輸出i的值1,然后,執(zhí)行i的自增1,再判斷i是否小于等于 10,結(jié)果為true,執(zhí)行輸出i的值2,以此類推輸出i的值10后,執(zhí)行i的自 增1,此為i為11,判斷結(jié)果為false,程序終止。1.4.4. for語句用于實(shí)現(xiàn)固定次數(shù)循環(huán)for語句常常用于解決固定次數(shù)循環(huán)的處理,比如說累加和,想求1+2 + 3+.+ 100的結(jié)果,次數(shù)固定執(zhí)行100次,可以考慮使用for循環(huán)處理,參見如下代碼:1. intsum = 0 ;2. for ( int i

14、= 1 ; i <= 100 ; i + + ) 3. sum += i ;4. )5. System. out. println( “1 到 100 的和為:” + sum );分析上面代碼的執(zhí)行過程,首先,聲明一個(gè)變量用于保存累加和,此變量命名 為sum,賦初始值為0,而后,for循環(huán)從1開始,每次增1,執(zhí)行100次,循環(huán) 體中將i的值累加到sum變量中。注意:每次都是在sum的基礎(chǔ)之上加上i,所 以使用了 sum +=i。循環(huán)結(jié)束后,輸出結(jié)果“1到100的和為:5050 “。了解了如上題目之后,問:想求10的階乘,即1*2*3*.*10,可不可以使用 for循環(huán)來解決,如果可以的話

15、要如何解決呢?當(dāng)然可以,try!1.4.5. for語句三個(gè)表達(dá)式特殊用法首先回顧for語句的語法:1 . for (表達(dá)式1;表達(dá)式2;表達(dá)式3 ) 2 .語句塊)通過上面的代碼可以看出,for語句實(shí)現(xiàn)循環(huán)時(shí)需要3個(gè)表達(dá)式并且使用分號; 分隔,在實(shí)際使用時(shí),for語句可以有幾種特殊的使用方法:特殊方式1 :表達(dá)式1位置內(nèi)容為空,看如下代碼:1. int sum = 0 ;12. int i = 1;3. for ( ; i <= 10 ; i + + ) 5. )6. System. out. println( “1 到 10 的和為:” + sum );通過上面的代碼可以看出,雖然省

16、略了表達(dá)式1 ,但只是將它放在了 for循環(huán) 的外面進(jìn)行聲明,只是位置不同而已。在此需要注意一點(diǎn),即使for語句中不寫表 達(dá)式1 了,表達(dá)式2前面的分號;也不能省略。特殊方式2 :表達(dá)式3位置內(nèi)容為空時(shí),看如下代碼:1. int sum = 0 ;2. for ( int i = 1 ; i <= 10 ; ) 3. sum += i ;4. i + + ;5. )6. System. out. println( “1 到 10 的和為:” + sum );通過上面的代碼可以看出,雖然省略了表達(dá)式3,但也只是將它放在了砧循 環(huán)體之中,只是位置不同而已。在此需要注意一點(diǎn),即使for語句中不

17、寫表達(dá)式3 了,表達(dá)式2后面的分號;也不能省略。特殊方式3 :表達(dá)式1,2,3位置內(nèi)容均為空時(shí),看如下代碼:1. for (;) 2. System. out. println(“我要學(xué)習(xí)”);3. )通過上面的代碼可以看出,如上代碼沒有循環(huán)變量、沒有條件控制,因此會造 成死循環(huán),而死循環(huán)在編寫程序過程中是必須要避免的,可以在循環(huán)體中添加 break跳出循環(huán)。特殊方式4 :表達(dá)式1和3位置內(nèi)容的多樣化for語句中的三個(gè)表達(dá)式中表達(dá)式1和表達(dá)式3可以使用逗號表達(dá)式,逗號表 達(dá)式就是通過運(yùn)算符隔開的多個(gè)表達(dá)式組成的表達(dá)式,從左向右進(jìn)行計(jì)算。 看如下示例:1. for ( int i =1 , j

18、= 6 ; i <= 6 ; i +=2 , j -=2 ) 2. System. out. println( “ i , j = " + i + ",” + j );3. )上面的代碼的執(zhí)行邏輯如下:初始設(shè)置i為1,j為6,判斷i是否小于等于6, 為真執(zhí)行循環(huán)體,而后執(zhí)行i + = 2,j-=2,即:i增2, j減2。再判斷i是否小于等 于6,為真繼續(xù)執(zhí)行循環(huán)體,以此類推,直到條件為false。本程序的輸出結(jié)果為:1. i ,j = 1,62. i , j = 3,43. i , j = 5,21.4.6. 循環(huán)中使用break語句循環(huán)中的break語句應(yīng)用率很廣,

19、break可用于循環(huán)語句或switch語句中, 其用于循環(huán)時(shí),可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句,常常與條件語句一起使 用,看如下代碼:1. int sum = 0;2. for(int i=1; i<=100; i+)3. if(sum>=4000)4. break;5. )6. sum += i;7. )8. System. out. println(sum);上面的程序需要統(tǒng)計(jì)1到100的累加和,條件是當(dāng)和大于等于4000時(shí)則終止 計(jì)算,此案例通過在if語句中使用break實(shí)現(xiàn)了 for語句的退出,本程序最終sum 的值為:4005。1.4.7. 循環(huán)中使用continue

20、語句continue語句只能用于循環(huán)中,它的作用為跳過循環(huán)體中剩余語句而執(zhí)行下 一次循環(huán),看如下代碼:1. int sum = 0;2. for(int i=1; i<=100; i+)3. if( i % 10 = 3 )4. continue;5. )6. sum += i;7. )8. System. out. println(sum);上面的程序需要統(tǒng)計(jì)1到100的累加和,條件是跳過所有個(gè)位為3的,此案 例通過在if語句中使用continue實(shí)現(xiàn)了跳過for語句中剩余的循環(huán)體語句,本程 序最終sum的值為:4570。TopJAVA Fundamental DAY041 .猜數(shù)字游

21、戲V1.02 .猜數(shù)字游戲V2.03,隨機(jī)加法運(yùn)算器1猜數(shù)字游戲V1.01.1 問題有猜數(shù)字游戲,其游戲規(guī)則為:程序內(nèi)置一個(gè)1到1000之間的數(shù)字作為猜 測的結(jié)果,由用戶猜測此數(shù)字。用戶每猜測一次,由系統(tǒng)提示猜測結(jié)果:大了、小 了或者猜對了;直到用戶猜對結(jié)果,則提示游戲結(jié)束。用戶可以提前退出游戲,即, 游戲過程中,如果用戶錄入數(shù)字0,則游戲終止。游戲的交互過程如下:1 .游戲剛開始,即提示用戶在控制臺錄入所猜測的數(shù)字,交互過程如圖-1所 示:QC4ns?1?_Eimpl值u*£5 J “a pplicalion匚陋ggrjm FilesVavjl謂襦我驚猾測的翻至退出調(diào)技k圖-12、

22、用戶錄入所猜測的數(shù)字后,程序進(jìn)行判斷:如果用戶所猜測的數(shù)字大于結(jié) 果,則提示“太大了!";如果用戶所猜測的數(shù)字小于結(jié)果,則提示“太小了”。 每次提示猜測結(jié)果后,并提醒用戶繼續(xù)猜測。交互過程如圖-2所示: CeAs«le iimpleGuct!Apfllicdlicir。城/口獷點(diǎn)e 而中Jfj哂北:滿輸入你貓洞的數(shù)用L-1CK)。),遺出修按儲慶小了 !通皤入你輯賽的數(shù)字*LTgg.遺出il授打氐大了!也輯入你輯晶的敦字一心外,澹出曲鼓h|圖-23、如果用戶猜測正確,則由系統(tǒng)提示“恭喜,你猜對了!,游戲結(jié)束。交 互過程如圖-3所示:舊心口前|<t-ermninErt&

23、lt;d!> 5;nn|ploGUDK 口已督0 ApplicM;on CiPfogram 耳11&¥舅.廿_9丫6I太小了 !謂臨入你徵測的獨(dú)享口 7口如U遭出謫指口,太小了 !請輸入好鴛瀏的舒宇nronu ifi出訪技的器耳,懷滿對了:圖-34、如果用戶希望提前退出游戲,則可以錄入數(shù)字0,游戲結(jié)束。交互過程如圖-4所示:< r m fn at &d > Srmpleu4ssi J ava Applitdtiort (:Pr-ftg rj 太夫,謂慵丸你輯或I的爨字門TO抑J,退比il按加太大了:請他人忤猾測的射字i-ioooj f退出請搜n二舊遣

24、修,下次再戰(zhàn)原吧!圖-41.2方案首先,此案例中,需要產(chǎn)生一個(gè)1到1000之間的隨機(jī)整數(shù),該數(shù)值就是用 戶要猜測的結(jié)果;然后,提示用戶進(jìn)行第一次猜測,并得到用戶從界面所錄入的數(shù) 字。因?yàn)椴聹y的次數(shù)不確定,則使用while循環(huán)來構(gòu)建猜測的過程:判斷用戶所 猜測的數(shù)字是否與結(jié)果相同,只要猜測不正確,則循環(huán)繼續(xù)。每次循環(huán)中,首先判 斷用戶錄入的數(shù)字是否為0,如果是,則使用break退出循環(huán);否則,根據(jù)比較 結(jié)果輸出提示信息("太大了或者“太小了”),并提示用戶繼續(xù)下一次猜測。如果用戶猜測正確或者錄入數(shù)字0,則while循環(huán)結(jié)束。循環(huán)結(jié)束后,需要 判斷用戶最后一次所錄入的數(shù)字,如果猜測正確,

25、則提示用戶“恭喜,你猜對了!” ;如果錄入的為數(shù)字0,則提示用戶“真遺憾,下次再挑戰(zhàn)吧!,然后程序結(jié)束。程序的流程如圖-5所示:nurn != guest限示蟒埃博利下一次精環(huán)始出 '耳逮情,下坡再 由國陽廣,粗序啟裝南出11息H . Ml對 了 !-程序站三群出太火了 :"輸出 “太小了 !"產(chǎn)生國JIM包心 作為安測恰畀僻I第一旗國疆涉 威亨guitt住用bdlc退斗循 乘圖-201.3步驟實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。步驟一:定義類及main方法首先定義一個(gè)名為NumberGuessV01的類,并在類中添加Java應(yīng)用程序的主方法main,代碼如下所示:1.

26、 public class NumberGuessV01 2. public static void main(String口 args) 3.步驟二:讀取第一次猜測結(jié)果在main方法中,提示用戶錄入所猜測的數(shù)字,作為第一次猜測;然后,實(shí)例化Scanner類,并調(diào)用Scanner類的nextInt方法接收用戶從控制臺輸入的數(shù)字。代碼如下所示:1. import java. util. Scanner;2. public class NumberGuessV01 3. public static void main(String口 args) 4. 生成一個(gè)隨機(jī)數(shù)作為猜測的結(jié)果5. int nu

27、m = (int) (Math.random() * 1000) + 1;6.7. 第一次猜測8. System.out.print("請輸入你猜測的數(shù)字(1-1000),退出請按0:");9. Scanner s = new Scanner(System.in);10. int guest = s.nextInt();11. )12. )注意:此步驟中,需要導(dǎo)入java.util包下的Scanner類。步驟三:構(gòu)建循環(huán)使用while循環(huán),判斷用戶所猜測的數(shù)字是否與結(jié)果相同:只要猜測不正確, 則循環(huán)繼續(xù)。每次循環(huán)中,需要使用if-else結(jié)構(gòu)判斷用戶所錄入的數(shù)字。首先, 判

28、斷錄入的數(shù)字是否為0,如果為0,表示用戶希望退出游戲,則使用break退 出循環(huán);然后比較猜測的數(shù)字和實(shí)際數(shù)字的大小,并根據(jù)比較結(jié)果輸出提示信息 ("太大了或者“太小了"),然后提示用戶繼續(xù)下一次猜測,并調(diào)Scanner 類的nextInt方法接收用戶錄入的下一個(gè)數(shù)字。代碼如下所示:1. import java. util. Scanner;2. public class NumberGuessV01 3. public static void main(String args) 4. 生成一個(gè)隨機(jī)數(shù)作為猜測的結(jié)果5. int num = (int) (Math. rand

29、om() * 1000) + 1;6.7. 第一次猜測8. System. out. print ("請輸入你猜測的數(shù)字(1-1000),退出請按0:");9. Scanner s = new Scanner(System. in);10. int guest = s. nextInt ();11.12. 如果猜測錯(cuò)誤,則繼續(xù)13. while (guest!=num) 14. 輸入為0,則退出循環(huán);否則判斷數(shù)字15. if(guest = 0)16. break;17. else if (guest > num) 18. System.out.println(&qu

30、ot;太大了!");19. else 20. System.out.println("太小了!");21. 22. System.out.print("請輸入你猜測的數(shù)字(1-1000),退出請按0:");23. guest = s.nextInt();24. 25. 26. )步驟四:游戲結(jié)束如果用戶猜測正確或者錄入數(shù)字0中止游戲,貝口 while循環(huán)結(jié)束。在while循環(huán)結(jié)束后,需要判斷用戶最后一次所錄入的數(shù)字,如果猜測正確,則提示用戶"恭喜,你猜對了!”;如果錄入的為數(shù)字0,則提示用戶“真遺憾,下次再挑戰(zhàn)吧!。最后將scanne

31、r對象關(guān)閉,程序結(jié)束。代碼如下所示:1. import java. util. Scanner;2. public class NumberGuessV01 3. public static void main(String口 args) 4. 生成一個(gè)隨機(jī)數(shù)作為猜測的結(jié)果5. int num = (int) (Math. random() * 1000) + 1;6.7. 第一次猜測8. System. out. print ("請輸入你猜測的數(shù)字(1-1000),退出請按0:");9. Scanner s = new Scanner(System. in);10. in

32、t guest = s. nextInt ();3.如果猜測錯(cuò)誤,則繼續(xù)while (guest!=num) 輸入為0,則退出循環(huán);否則判斷數(shù)字if(guest = 0)break;else if (guest > num) System. out. println("太大了 !"); else System. out. println("太小了 !");System. out. print ("請輸入你猜測的數(shù)字(1-1000),退出請按0:");gue

33、st = s. nextInt ();24. )25.26. 提示用戶最終結(jié)果27. if(guest = num) 28. $丫516m,0成磔血1口("恭喜,你猜對了!");29. else30. System. out.println("真遺憾,下次再挑戰(zhàn)吧!");31. 32. s.c1ose();33. )34. )1.4完整代碼本案例的完整代碼如下所示:1. import java. util. Scanner;2. public class NumberGuessV01 3. public static void main(String口

34、args) 4. 生成一個(gè)隨機(jī)數(shù)作為猜測的結(jié)果5. int num = (int) (Math. random() * 1000) + 1;6.7. 第一次猜測8. System. out. print ("請輸入你猜測的數(shù)字(1-1000),退出請按0:");9. Scanner s = new Scanner(System. in);10. int guest = s. nextInt ();11.12. 如果猜測錯(cuò)誤,則繼續(xù)13. while (guest!=num) 14. 輸入為0,則退出循環(huán);否則判斷數(shù)字15. if(guest = 0)9.

35、20.21.22.出請按0:");2.33. )34. )break; else if (guest > num) System. out. println("太大了 !"); else System. out. println("太小了 !");System. out. print ("請輸入你猜測的數(shù)字(1-1000),退guest = s. nextInt ();提示用戶最終結(jié)果if(guest = num) System. out. println("恭喜

36、,你猜對了 !”);elseSystem. out. println("真遺憾,下次再挑戰(zhàn)吧!”);s. close();隱藏2猜數(shù)字游戲V2.02.1問題使用do - while語句實(shí)現(xiàn)猜數(shù)字游戲,界面的交互過程和上一個(gè)案例相同。2.2方案此案例的實(shí)現(xiàn)方案和之前的案例類似。首先,此案例中,需要產(chǎn)生一個(gè)1到1000之間的隨機(jī)整數(shù),該數(shù)值就是用 戶要猜測的結(jié)果;然后,提示用戶進(jìn)行第一次猜測,并得到用戶從界面所錄入的數(shù) 字。因?yàn)椴聹y的次數(shù)不確定,則使用do-while循環(huán)來構(gòu)建猜測的過程:判斷用戶 所猜測的數(shù)字是否與結(jié)果相同,只要猜測不正確,則循環(huán)繼續(xù)。每次循環(huán)中,首先 判斷用戶錄入的數(shù)

37、字是否為0,如果是,則使用break退出循環(huán);否則,根據(jù)比 較結(jié)果輸出提示信息(“太大了或者“太小了”),并提示用戶繼續(xù)下一次猜測。如果用戶猜測正確或者錄入數(shù)字0,則循環(huán)結(jié)束。循環(huán)結(jié)束后,需要判斷用戶 最后一次所錄入的數(shù)字,如果猜測正確,則提示用戶“恭喜,你猜對了!”;如果 錄入的為數(shù)字0,則提示用戶“真遺憾,下次再挑戰(zhàn)吧!,然后程序結(jié)束。程序 的流程如圖-6所示:調(diào)壞結(jié)束提示維續(xù)揩淳 MT-T皰工胤加 面,序A g uest循環(huán)結(jié)束耍用break出Jiff 壞產(chǎn)生誠機(jī)救num 乍為!W3J蟲果磨出K小了 11輸出丁堂墻一下次眄 挑嫁吧,桂序結(jié)市場出.寄,你抽時(shí) 了 I ',程序造第勘

38、出古大了 I *得刈第一淳:醒孰 融字guest下一次豳壞圖-62.3步驟實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。步驟一:定義類及main方法首先定義一個(gè)名為NumberGuessV03的類,并在類中添加Java應(yīng)用程序的 主方法main,代碼如下所示:1. public class NumberGuessV03 2. public static void main(String口 args) 3. )4. )步驟二:準(zhǔn)備錄入在main方法中,生成一個(gè)隨機(jī)數(shù)作為猜測的結(jié)果,然后實(shí)例化Scanner類, 用于接收用戶從控制臺輸入的數(shù)字,還需要聲明變量用于存儲用戶所錄入的數(shù)字。 代碼如下所示:1. imp

39、ort java. util. Scanner;2. public class NumberGuessV03 3. public static void main(String口 args) 4. 生成一個(gè)隨機(jī)數(shù)作為猜測的結(jié)果5. int num = (int) (Math.random() * 1000) + 1;6.7. 準(zhǔn)備輸入8. Scanner s=newScanner(System.in);9. int guest=-1;10. )11. )注意:此步驟中,需要導(dǎo)入java.util包下的Scanner類。步驟三:構(gòu)建循環(huán)使用do-while循環(huán),提示用戶進(jìn)行猜測,并調(diào)用Scann

40、er類的nextInt方 法接收用戶錄入的數(shù)字,然后判斷用戶所猜測的數(shù)字是否與結(jié)果相同:只要猜測不 正確,則循環(huán)繼續(xù)。每次循環(huán)中,需要使用if-else結(jié)構(gòu)判斷用戶所錄入的數(shù)字。首先,判斷錄入 的數(shù)字是否為0,如果為0,表示用戶希望退出游戲,則使用break退出循環(huán); 然后比較猜測的數(shù)字和實(shí)際數(shù)字的大小,并根據(jù)比較結(jié)果輸出提示信息("太大了 或者"太小了")。代碼如下所示:1. import java. util. Scanner;2. public class NumberGuessV03 3. public static void main(String口 a

41、rgs) 4. 生成一個(gè)隨機(jī)數(shù)作為猜測的結(jié)果5. int num = (int) (Math. random() * 1000) + 1;6.7. 準(zhǔn)備輸入8. Scanner s = new Scanner(System. in);9. int guest = -1;10. do11. System.out.print("請輸入你猜測的數(shù)字(1-1000),退出請按0:");12. guest = s.nextInt();13. 判斷:輸入0,則中止14. if(guest = 0)15. break;16. else if (guest > num) 17. Sy

42、stem.out.println("太大了!");18. else if (guest < num)19. System.out.println("太小了!");20. 21. while(guest !=num);22. )23. )步驟四:游戲結(jié)束如果用戶猜測正確或者錄入數(shù)字0中止游戲,則循環(huán)結(jié)束。在循環(huán)結(jié)束后, 需要判斷用戶最后一次所錄入的數(shù)字,如果猜測正確,則提示用戶“恭喜,你猜對 了! ”;如果錄入的為數(shù)字0,則提示用戶“真遺憾,下次再挑戰(zhàn)吧!。最后將 scanner對象關(guān)閉,程序結(jié)束。代碼如下所示:1. import java. uti

43、l. Scanner;2. public class NumberGuessV03 3. public static void main(String args) 4. 生成一個(gè)隨機(jī)數(shù)作為猜測的結(jié)果5. int num = (int) (Math. random() * 1000) + 1;6.7. 準(zhǔn)備輸入8. Scanner s=new Scanner(System. in);9. int guest=-1;10. do11. System. out. print ("請輸入你猜測的數(shù)字(1T000),退出請按0:");12. guest = s. nextInt ()

44、;13. 判斷:輸入0,則中止14. if(guest = 0)15. break;16. else if(guest > num) 17. System. out. println("太大了 !”);18. else if (guest < num)19. System. out. println("太小了 !");20. 21. while(guest!=num);22. 提示用戶最終結(jié)果9. 30. if(guest = num) System.out.println("恭喜,你猜對了!"

45、);elseSystem.out. println("真遺憾,下次再挑戰(zhàn)吧!");s.close();2.4完整代碼本案例的完整代碼如下所示:1. import java. util. Scanner;2. public class NumberGuessV03 3. public static void main(String args) 4. 生成一個(gè)隨機(jī)數(shù)作為猜測的結(jié)果5. int num = (int) (Math. random() * 1000) + 1;6.7. 準(zhǔn)備輸入8. Scanner s=new Scanner(System. in);9. int g

46、uest=-1;10. do11. System. out. print ("請輸入你猜測的數(shù)字(1T000),退出請按0:");12. guest = s. nextInt ();13. 判斷:輸入0,則中止14. if(guest = 0)15. break;16. else if(guest > num) 17. System. out. println("太大了 !”);18. else if (guest < num)19. System. out. println("太小了 !");20. 21. while(guest

47、!=num);22.23. 提示用戶最終結(jié)果24. if(guest = num) 25. System. out. println("恭喜,你猜對了 !”);26. else27. System. out. println("真遺憾,下次再挑戰(zhàn)吧!”);28. )129.s. close();30. )31. )隱藏3隨機(jī)加法運(yùn)算器3.1問題有加法運(yùn)算器程序,其規(guī)則為:程序依次出10道加法題目,由用戶輸入題目 的答案。用戶每答完一道題,由系統(tǒng)提示結(jié)果:答錯(cuò)了或者答對了。10道題目答 完之后,系統(tǒng)計(jì)算得分并輸出。如果用戶希望提前結(jié)束,則可以輸入-1提前退出。本案例要求使用交

48、互的方式實(shí)現(xiàn)此游戲,交互過程為:1、程序開始,即出現(xiàn)一道加法題(兩個(gè)加數(shù)均為0到99之間的隨機(jī)整數(shù)), 并提示用戶輸入該題目的答案(輸入-1則會提前退出程序)。交互過程如圖-7 所示:0需、AddMqnTdct 通四 Applkati-Dn C:Pr0gra1m FileEJava將開的我恢加礴試.二11). se » 7J - *請脩入智翼(輸人退擊):圖-72、用戶錄入后,程序進(jìn)行判斷:如果用戶錄入的答案錯(cuò)誤,則提示“Error!” ; 如果答案正確,則提示"Correct。然后給出下一道題目,并提醒用戶繼續(xù)答 題。用戶答完10道題目后,系統(tǒng)給出用戶的得分并顯示(每道題

49、目10分),程0 Console(Jwa “雨11】陽1M 型m FA&Z&vj該輸入答案(»A-iBdi) s匚“工EE:清物人管寤f輸入1遍式】:冉;reh110 r 42 4" ?請輸入房飴(輸入7強(qiáng)出;t-arEecc 7在次測蠟結(jié)素,惴的分料罡:如圖-83、如果用戶錄入-1,則表示希望提前退出程序,系統(tǒng)將提示用戶的分?jǐn)?shù),<t#rrnSnated> 4ddiRgfiTzst Java ppJfcicadon C:ll*fe>grain 總”葉司科曲且程序結(jié)束。交互過程如圖-9所示:I將開始g次加法劇試.<L), 33 * S噌

50、0?謁桶人誓去(輸入7退出):占E七0 ± t !仰.73 7 7逢愉人答嘉(輸入T遇出):璃次測驗(yàn)結(jié)束,你的分?jǐn)?shù)是;W圖-93.2方案此案例中,需要使用for循環(huán)產(chǎn)生10道加法題目。在每次循環(huán)中,需要產(chǎn)生兩個(gè)0到99之間的隨機(jī)整數(shù),作為加法題目的兩 個(gè)加數(shù),并計(jì)算出正確答案;然后,輸出題目,并提示用戶進(jìn)行答題,從而得到用 戶從界面所錄入的數(shù)字。得到用戶的錄入后,進(jìn)行判斷:如果用戶錄入的為-1,則需要提前退出循環(huán); 如果用戶錄入的答案錯(cuò)誤,則提示"Error !”,并繼續(xù)下一次答題;如果用戶錄入的答案正確,則提示"Correct,繼續(xù)下一次答題。循環(huán)結(jié)束后,計(jì)算用

51、戶的得分并輸出,程序結(jié)束。注:用戶得分的規(guī)則是,每 答對一道題,得10分,滿分為100分。程序的流程如圖-10所示:圖-103.3步驟實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。步驟一:定義類及main方法首先定義一個(gè)名為AdditionTest的類并在類中添加Java應(yīng)用程序的主方法main,代碼如下所示:1. public class AdditionTest 2. public static void main(String口 args) 3. )4. )步驟二:準(zhǔn)備在main方法中,輸出程序即將開始的提示信息,并實(shí)例化Scanner類,用于 準(zhǔn)備接收用戶從控制臺輸入的數(shù)字,然后,聲明變量score

52、用于記載用戶的得分。 代碼如下所示:1. import java. util. Scanner;2. public class AdditionTest 3. public static void main(String args) 4. System.out.println("將開始 10 次加法測試.");5. Scanner scanner= newScanner(System.in);6. 用于記載分?jǐn)?shù)7. int score = 0;8. )9. )注意:此步驟中,需要導(dǎo)入java.util包下的Scanner類。步驟三:構(gòu)建循環(huán)使用for語句,構(gòu)建10次循環(huán)。在

53、循環(huán)中使用Math類的random方法返回兩個(gè)0到1之間的隨機(jī)數(shù)包 含0,不包含1),然后將所產(chǎn)生的數(shù)值乘以100,并取其整數(shù)部分,則可以生 成兩個(gè)0到99之間的隨機(jī)整數(shù)(包含0,也包含99),表示加法題目中的兩 個(gè)加數(shù)。計(jì)算加法運(yùn)算的結(jié)果,并輸出題目,代碼如下:1. import java. util. Scanner;2. public class AdditionTest 3. public static void main(String args) 4. System. out. println("將開始 10 次加法測試.”);5. Scanner scanner = ne

54、w Scanner(System. in);6. 用于記載分?jǐn)?shù)7. int score = 0;8. /構(gòu)建10次循環(huán)9. for (int i=1;i<=10;i+) 10. 隨機(jī)生成兩個(gè)加數(shù)11. inta = (int) (Math.random()*100);12. intb = (int) (Math.random()*100);13. intresult = a + b;14.15. 輸出需要計(jì)算的加法表達(dá)式16. System.out.println("(" + i + "). " + a + " + ” + b+ &quo

55、t; = ?");17. System.out.print("請輸入答案(輸入-1 退出):");18. 19. )20. )步驟四:判斷錄入得到用戶的錄入后,進(jìn)行判斷:如果用戶錄入的為-1,則需要提前退出循環(huán); 如果用戶錄入的答案錯(cuò)誤,則提示"Error !”,并繼續(xù)下一次答題;如果用戶錄 入的答案正確,則提示"Correct,并計(jì)算用戶的得分,然后繼續(xù)下一次的答 題。用戶得分的規(guī)則是,每答對一題,得10分(滿分為100分)。代碼如下所示:1. import java. util. Scanner;2. public class AdditionTest 3. public static void main(String口 args) 4. System. out. println("將開始 10 次加法測試.”);5. Scanner scanner = new Scanner(System. in);6. 用于記載分?jǐn)?shù)7. int score = 0;8. 構(gòu)建10次循環(huán)9. for (int i=1;i<=10;i+) 10. 隨機(jī)生成兩個(gè)加數(shù)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論