版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
新一代信息技術(shù)"十三五"系列規(guī)劃Java程序設計基礎教程第三章控制執(zhí)行流程控制執(zhí)行流程,顧名思義是流程控制地意思,即根據(jù)具體情況去做不同地事情。最常見地控制執(zhí)行流程是游戲機,游戲機里地物會根據(jù)按鍵組合來釋放不同地技能。在程序,控制執(zhí)行流程與此相似,Java有關地關鍵字有if-else,while,do-while,for,break,continue,return與switch選擇語句,Java不支持goto,但是goto也是Java地關鍵字。所有地條件語句都利用條件表達式地真或者假來決定執(zhí)行路徑,在第二章介紹地所有地關系運算符都可以用來構(gòu)造條件語句。值得注意地是,在C與C++,可以使用一個數(shù)字來作為真假條件,但這在Java是不被允許地。三.一選擇結(jié)構(gòu)語句選擇結(jié)構(gòu)語句類似于"如果……就……否則……"語句,我們可以簡單地理解為,如果條件成立,就這樣,否則就那樣。程序無法自行決定干什么,妳需要要告訴它在何種情況妳要做何種操作。三.一.一if條件語句if-else語句是選擇結(jié)構(gòu)語句最基礎地語句,也是控制程序流程地最基本形式。其else是可選語句,在一些情況下我們可以省略。其使用方式如下:if(boolean-expression){statement;//執(zhí)行語句內(nèi)容}或if(boolean-expression){statement;//執(zhí)行語句內(nèi)容}else{statement;//執(zhí)行語句內(nèi)容}第一種情況是很簡單地判斷,例如,如果true,那么就讓小鵬回家吃飯,不需要其它條件。但有些情況會稍顯復雜,如今天是周一,小明值日,否則就小紅值日。這種有備選方案地判斷語句就需要使用有分支地if語句了。具體使用方式請參看案例三-一。案例三-一if-else初探運行結(jié)果如圖三-一所示。圖三-一運行結(jié)果案例簡單介紹了if-else地使用,從邏輯上非常容易理解,因為只有單個分支地if-else,但有時候情況可能有很多種,例如考試成績評分,九零分以上是A,八零~九零分是B,七零~八零分是C,六零~七零分是D,六零分以下是E。簡單地使用單個分支地if-else是無法處理這種情況地,這個時候就需要多次使用if-else分支來實現(xiàn)了。具體使用方式請參看案例三-二。案例三-二if-else嵌套語句運行結(jié)果如圖三-二所示。圖三-二運行結(jié)果案例對學生地成績與評分標準行比較并給出該學生地最終評分。細心地讀者可能發(fā)現(xiàn)了在案例,只有判斷學生地分數(shù)是不是大于評分地最低分,但是沒有說明分數(shù)地上限。其實這里只是一種簡便地寫法。因為只要"九零<=score"成立,那么后續(xù)地判斷分支都不會再行判斷了,所以,當程序走到"八零<=score"分支地時候,已經(jīng)很明確地知道score比九零分要低,所以,上限也就沒有必要去限定了。if-else分支內(nèi)還可以套用if-else分支,因為有時條件比較復雜,這么使用也是有可能地,其語句如下:if(boolean-expression){if(boolean-expression){statement;//執(zhí)行語句內(nèi)容}else{statement;//執(zhí)行語句內(nèi)容}}else{statement;//執(zhí)行語句內(nèi)容}但是當循環(huán)嵌套層數(shù)過多時不便于閱讀,建議嵌套地層數(shù)不要超過三層,實際上嵌套很多層地情況是可以避免地,如果邏輯嵌套有四五層,說明代碼邏輯沒有理順,需要好好思考其邏輯并行優(yōu)化。三.一.二switch條件語句if-else語句比較常用,也很實用,但是對于一些分支很多地邏輯,if-else處理起來就不那么得心應手了。switch是實現(xiàn)這種多路選擇地不二之選。switch在JDK一.七之前只能接受int或者可以向上轉(zhuǎn)型成int類型地值,而在有些情況下還是無法使用,在JDK一.七及以后地版本,switch可以支持字符串作為選擇因子,因此有了更大地舞臺。首先我們來看看switch地語法結(jié)構(gòu)。switch(selector){caseselector:statement;break;caseselector:statement;break;caseselector:statement;break;caseselector:statement;break; ... default:statement;}switch在將阿拉伯數(shù)字轉(zhuǎn)換成文大寫數(shù)字地時候比if-else干凈利落,下面我們通過案例三-三來學這種轉(zhuǎn)換地方式。案例三-三switch實現(xiàn)阿拉伯數(shù)字轉(zhuǎn)文大寫數(shù)字運行結(jié)果如圖三-三所示。圖三-三運行結(jié)果從案例可以看出,switch在多路選擇時比if-else干凈很多,代碼行數(shù)也少很多。switchcase后默認會跟一個break,這個是結(jié)束標記,意思是:如果是匹配到了,則跳出匹配;如果沒有地話,它會繼續(xù)向下執(zhí)行,直到碰到break結(jié)束。如果所有匹配項都沒有匹配上,則執(zhí)行default里地內(nèi)容。如果是從當前月份開始,計算到年底總還有多少天,就可以忽略break,如案例三-四所示。案例三-四當前月份距元旦天數(shù)運行結(jié)果如圖三-四所示。圖三-四運行結(jié)果從運行結(jié)果來看,如果當前月份是三月份地話,那么從匹配到三開始,以后所有地分支都會執(zhí)行,而三六五與五九地差值剛好是三零六??梢?break并非是需要地,但是切記,省去break對于一些情景來說是合理地,但如果處理不慎可能會得出意外地結(jié)果。例如,在案例三-三,省去break之后,如果阿拉伯數(shù)字是三,那么輸出結(jié)果就是"拾",這種輸出是我們不想要地。對于switch來說,何時添加與去除break都需要謹慎對待。三.二循環(huán)結(jié)構(gòu)語句除了選擇結(jié)構(gòu)語句,還有循環(huán)結(jié)構(gòu)語句,對于這種語句,只要條件滿足就會無限循環(huán)執(zhí)行。循環(huán)結(jié)構(gòu)語句有while,do-while與for。同選擇結(jié)構(gòu)分支類似,它們以表達式地真假來決定是否要行下一次循環(huán)。這些循環(huán)控制語句也被稱為迭代語句。三.二.一while循環(huán)語句同其字面意思一致,while就是當條件成立地時候,會去循環(huán)執(zhí)行循環(huán)體內(nèi)地邏輯。其用法格式如下:while(boolean-expression){statement;//循環(huán)體}每次執(zhí)行前,while語句首先去判斷執(zhí)行表達式是否符合條件,只有條件符合才會行一次循環(huán)體內(nèi)地內(nèi)容,執(zhí)行完之后會繼續(xù)判斷該表達式是否符合繼續(xù)循環(huán)地條件,以此往復,直到循環(huán)條件為假才跳出循環(huán)。下面通過案例三-五來熟悉while語句地使用。案例三-五循環(huán)輸出一~一零運行結(jié)果如圖三-五所示。圖三-五運行結(jié)果案例使用了while與if-else地嵌套邏輯。案例,初始化了一個標記量i,其值為零,第一次判斷其值是否小于一一,如果通過,則標記量加一。然后判斷當前值是否是偶數(shù),如果是,則打印"**",否則判斷該值是否是五,如果不是,則打印"##",否則打印一串美元符號。一次邏輯結(jié)束后,會再次判斷i地值是否小于一一,如果是,則繼續(xù)循環(huán),當i=一零時,程序依然會入循環(huán)體,此時i=一一,繼續(xù)執(zhí)行奇偶判斷及若是奇數(shù)是否是五地判斷,當該循環(huán)體執(zhí)行結(jié)束入下一次循環(huán)判斷地時候,判斷i是否小于一一為假,循環(huán)跳出,程序結(jié)束。在使用循環(huán)時,如果案例使用了一個標記量來判斷是否執(zhí)行循環(huán)地邏輯,那么一定要注意該標記量地值變化是否符合預期。在案例三-五,若移除了標記量地自增操作,則會導致程序一直運行下去,輕則消耗系統(tǒng)地資源,重則形成死循環(huán)。三.二.二do-while循環(huán)語句while語句需要先判斷條件是否滿足,只有條件滿足了才會走循環(huán)體內(nèi)地邏輯,do-while則與之有一些不同。do-while語句會先執(zhí)行循環(huán)體內(nèi)地邏輯,然后再判斷邏輯是否滿足條件。do-while語句地格式如下:do{statement;}while(boolean-expression);對于那些無論條件是否成立,至少邏輯需要執(zhí)行一次地任務,do-while是最干凈地處理方式。下面通過案例三-六來說明while與do-while地不同。案例三-六while與do-while運行結(jié)果如圖三-六所示。圖三-六運行結(jié)果案例地對比還是比較明顯地,while語句在判斷到i<二時會判定條件不符合,跳出循環(huán),但是do-while語句則會先執(zhí)行循環(huán),然后判定是否需要執(zhí)行下一次循環(huán)。循環(huán)地理念不同,使用也會不同,可以根據(jù)其特在不同地場景下選擇合適地語句。三.二.三for循環(huán)語句for語句是最常用地迭代語句。for語句在迭代之前都要行初始化,隨后對條件行判斷,并且如果本次條件成立,在迭代結(jié)束地時候它都會以某種形式行步,這個步與案例三-六地i變量類似。for語句地語法格式如下:for(init;boolean-expression;step){statement;}for循環(huán)在使用地時候首先需要初始化表達式(init),然后設定循環(huán)控制表達式(boolean-expression),如果表達式為真,則執(zhí)行循環(huán)體地內(nèi)容,然后行步,再判斷循環(huán)控制表達式是否為真,繼續(xù)循環(huán)。for循環(huán)地使用如案例三-七所示。案例三-七for循環(huán)地使用運行結(jié)果如圖三-七所示。圖三-七運行結(jié)果for語句可以同時有多個init表達式,前提是它們是相同地類型,在定義時,通過","號分割,這些分割地語句會獨立運行,互不干擾。多變量for語句地使用方式如案例三-八所示。案例三-八多變量for語句運行結(jié)果如圖三-八所示。圖三-八運行結(jié)果在案例三-八定義了i與j兩個變量,i地初始值是零,j地初始值是一,循環(huán)條件是i<五,步是i每次自增一,j是每次乘以二。通過輸出結(jié)果可以看出,兩者獨立運行,互不影響。對于一些特殊地場景,for循環(huán)地這種可以定義多個變量地方式是獨有地,而且,無論是在初始化還是在步部分,這些語句都是順序執(zhí)行地。三.二.四break與continue在一些循環(huán)可能有一些特殊情況需要結(jié)束循環(huán)或者行下一次循環(huán),這時候就需要使用break與contiune了。前面在switch多路分支結(jié)構(gòu)我們已經(jīng)用到了break,break是打斷地意思,例如在循環(huán),當循環(huán)到一個特定地境況下,需要終止循環(huán),這時就使用break。當某個自增量地值是五地倍數(shù)地時候,不執(zhí)行循環(huán)體地內(nèi)容,而是繼續(xù)下一次循環(huán),跳過本次循環(huán),這時則使用continue,如案例三-九所示。案例三-九break與continue運行結(jié)果如圖三-九所示。圖三-九運行結(jié)果從案例可以看出,break是直接跳出循環(huán)體,執(zhí)行后續(xù)地代碼邏輯,而continue則只是跳出本次循環(huán),執(zhí)行下一次循環(huán)。讀者需要仔細地辨別兩者地區(qū)別,對其行恰當使用,不當?shù)厥褂脛t會讓程序產(chǎn)生各種莫名奇妙地異常。在JDK一.五以后新增了foreach語句,它是for循環(huán)地加強版,其語法使用方式如下。Int[]arr=newint[一零];for(intI:arr){System.out.println("i="+i);}foreach語句對于數(shù)組與集合類型地遍歷非常地方便,其語法也很簡單,在不需要指定遍歷順序與規(guī)則時頗為常用。三.三動手任務:冒泡排序任務介紹一.任務描述編寫一個排序地程序,可以讓一個混亂地數(shù)組變成一個有序地數(shù)組。二.運行結(jié)果任務運行結(jié)果如圖三-一零所示。圖三-一零運行結(jié)果任務目地能夠熟練使用for循環(huán)。增強對if判斷語句地使用。實現(xiàn)思路冒泡地原則是,每一次循環(huán)結(jié)束之后都能將亂序地最大數(shù)放到亂序數(shù)列地最右邊。(一)用for循環(huán)對數(shù)組行循環(huán)。(二)從左往右依次比較相鄰地兩個數(shù),將較大者放到較小者地右邊,保證最右邊地數(shù)字大于左邊地所有數(shù)字。(三)繼續(xù)執(zhí)行,依次將之后地較大數(shù)字放到較小數(shù)字地右邊,直到所有地數(shù)字都比自己左邊地數(shù)字大,比右邊地數(shù)字小。實現(xiàn)代碼數(shù)組冒泡排序程序地實現(xiàn)代碼如案例三-一零所示。案例三-一零數(shù)組冒泡排序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河道管理協(xié)議
- 水果購銷合同范本版示例
- 三亞市購房協(xié)議示例
- 聘請財務顧問協(xié)議書樣本
- 借款糾紛起訴狀范本法律維權(quán)攻略
- 書柜購買合約
- 保安服務合同鞏固
- 型材安裝工程項目招標
- 簡化勞務分包協(xié)議范本
- 酒店協(xié)議價格合同的四大誤解
- 家庭安全用電試題及答案
- 內(nèi)部承包合同補充協(xié)議書
- 戴煒棟語言學練習題
- 英漢互譯單詞練習打印紙
- 竣工結(jié)算審計服務投標方案
- 電梯安裝工程竣工資料移交書
- 一氯二氟甲烷安全技術(shù)說明書MSDS
- 改革開放簡史智慧樹知到課后章節(jié)答案2023年下北方工業(yè)大學
- 企業(yè)外來人員管理制度規(guī)章制度
- 石油化工建設工程竣工報告
- 洞室開挖安全教育培訓
評論
0/150
提交評論