- Java程序設(shè)計(jì)
- 韓建平
- 1980字
- 2020-06-19 13:10:51
第3章 程序流程控制
3.1 順序與分支結(jié)構(gòu)
3.1.1 順序結(jié)構(gòu)
程序的基本結(jié)構(gòu)形式有順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)是程序中經(jīng)常見到的,也是最簡單的一種結(jié)構(gòu)。語句依次排列,就形成了順序結(jié)構(gòu)。語句的先后順序決定其執(zhí)行次序,也就是排在前面的語句先執(zhí)行,排在后面的語句后執(zhí)行。
順序結(jié)構(gòu)可以獨(dú)立使用,構(gòu)成一個(gè)簡單的完整程序,不過大多數(shù)情況下,順序結(jié)構(gòu)都是作為程序的一部分,與其他結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序。例如,分支結(jié)構(gòu)中的復(fù)合語句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。
【例3-1】隨機(jī)生成一道20以內(nèi)的加法測試題。
【程序】

【運(yùn)行結(jié)果】

【程序說明】
程序中的語句就是按順序結(jié)構(gòu)來組織的。先產(chǎn)生一個(gè)20以內(nèi)的隨機(jī)整數(shù)賦值給a,再產(chǎn)生一個(gè)20以內(nèi)的隨機(jī)整數(shù)賦值給b,最后輸出對應(yīng)的加法測試題。
Math.random()調(diào)用Math類中的random()方法產(chǎn)生一個(gè)[0, 1)之間的double型隨機(jī)數(shù)。這樣表達(dá)式Math.random()的值是一個(gè)[0,1)之間的隨機(jī)實(shí)數(shù),而表達(dá)式(int)(Math.random()*20)的值是一個(gè)[0, 20)之間的隨機(jī)整數(shù)。程序運(yùn)行后,每次輸出的加法測試題是不一樣的。
3.1.2 if語句實(shí)現(xiàn)分支結(jié)構(gòu)
if語句的一般格式為:

條件表達(dá)式有true和false兩種可能的取值,分別表示邏輯判斷的真和假。if語句的執(zhí)行流程如圖3-1所示,如果條件表達(dá)式的值為true,就執(zhí)行語句A;否則不執(zhí)行語句A。

圖3-1 if語句的執(zhí)行流程
這里的語句A可以是單個(gè)語句,也可以是包含多條語句的語句塊。語句塊也稱為復(fù)合語句,以“{”開始,“}”結(jié)束,中間包含若干條語句。
【例3-2】隨機(jī)生成一道20以內(nèi)的減法測試題,要求被減數(shù)大于或等于減數(shù)。
【程序】

【運(yùn)行結(jié)果】

【程序說明】
程序先產(chǎn)生一個(gè)20以內(nèi)的隨機(jī)整數(shù)賦值給a,再產(chǎn)生一個(gè)20以內(nèi)的隨機(jī)整數(shù)賦值給b。為了讓被減數(shù)大于等于減數(shù),當(dāng)a小于b時(shí),需要將a和b的值互換。
語句塊{t=a;a=b;b=t;}中的3條語句是一個(gè)整體,在a小于b時(shí)一一執(zhí)行,而在a大于或等于b時(shí)都不執(zhí)行。語句塊中的3條語句用來實(shí)現(xiàn)變量a和變量b之間的交換。先把a(bǔ)暫存在變量t中,然后把b賦值給a,最后把t賦值給b。
3.1.3 if-else語句實(shí)現(xiàn)分支結(jié)構(gòu)
if-else語句的一般格式為:

if-else語句的功能是,根據(jù)條件表達(dá)式的值,確定執(zhí)行語句A或語句B,執(zhí)行流程如圖3-2所示。如果條件表達(dá)式的值為true,則執(zhí)行語句A;否則執(zhí)行語句B。

圖3-2 if-else語句的執(zhí)行流程
【例3-3】隨機(jī)生成一道20以內(nèi)的加法測試題,由程序?qū)y試者輸入的計(jì)算結(jié)果進(jìn)行評判。
【程序】

【運(yùn)行結(jié)果】
第1次運(yùn)行:

第2次運(yùn)行:

【程序說明】
程序先隨機(jī)產(chǎn)生一個(gè)加法測試題,再由測試者輸入計(jì)算結(jié)果,然后由程序?qū)斎氲挠?jì)算結(jié)果進(jìn)行評判。計(jì)算正確輸出“Good!”,計(jì)算錯(cuò)誤輸出“Wrong!”。在計(jì)算正確和錯(cuò)誤兩種情況下,執(zhí)行不同的語句。
3.1.4 嵌套if語句實(shí)現(xiàn)多分支結(jié)構(gòu)
前面介紹了兩種形式的if語句。if語句所包含的語句A(或語句B)也可以是一個(gè)if語句,也就是說,if語句內(nèi)嵌了另一個(gè)if語句,這種情況一般稱為嵌套if語句。多分支結(jié)構(gòu)可以采用嵌套if語句來實(shí)現(xiàn)。
【例3-4】隨機(jī)生成一道20以內(nèi)的加法、減法或乘法測試題,由計(jì)算機(jī)對測試者輸入的計(jì)算結(jié)果進(jìn)行評判。
【程序】

【運(yùn)行結(jié)果】
第1次運(yùn)行:

第2次運(yùn)行:

【程序說明】
本例不僅要求運(yùn)算數(shù)據(jù)是隨機(jī)的,而且運(yùn)算類型也是不確定的,可能是加、減、乘運(yùn)算中的一種。如何產(chǎn)生一個(gè)運(yùn)算類型不確定的算式呢?一個(gè)簡單的思路是,先生成一個(gè)0~2的隨機(jī)整數(shù),然后根據(jù)整數(shù)的值輸出相應(yīng)類型的算式。0、1、2對應(yīng)加法、減法、乘法這3個(gè)分支,可以采用嵌套if語句實(shí)現(xiàn)。
3.1.5 switch語句實(shí)現(xiàn)多分支結(jié)構(gòu)
例3-4用嵌套if語句實(shí)現(xiàn)了多分支選擇結(jié)構(gòu)。多層的if嵌套可以實(shí)現(xiàn)多分支的選擇結(jié)構(gòu),但過多的if嵌套會使程序不太容易理解。Java語言提供了switch語句,用于處理多分支問題。switch語句的一般格式為:

每個(gè)case及default表示一個(gè)分支,語句執(zhí)行時(shí)會根據(jù)表達(dá)式A的值,選擇執(zhí)行對應(yīng)的分支。switch語句的執(zhí)行流程如下:
(1)首先計(jì)算表達(dá)式A的值,然后用此值依次與各個(gè)case常量表達(dá)式的值比較,當(dāng)表達(dá)式A的值與某個(gè)case后面的常量表達(dá)式的值相等時(shí),就轉(zhuǎn)去執(zhí)行此case后面的語句序列,執(zhí)行break語句后,退出switch語句。
(2)若表達(dá)式A的值與所有case后面的常量表達(dá)式值都不相等,則執(zhí)行default后面的語句序列n+1,然后退出switch語句。
使用switch語句時(shí),需要注意下面幾個(gè)問題:
(1)表達(dá)式A的數(shù)據(jù)類型可以是byte、short、int或char,但不可以是long、float、double和boolean。
(2)每個(gè)case后面都是常量表達(dá)式,其中不可以出現(xiàn)變量。每個(gè)case后常量表達(dá)式的值必須互不相同,否則就會出現(xiàn)互相矛盾的現(xiàn)象。
(3)從形式上來說,break語句并不是必需的。但去掉break語句以后,程序流程會發(fā)生變化。例如,如果把語句序列2后面的break語句刪除,那么當(dāng)表達(dá)式A的值與常量表達(dá)式2的值相等時(shí),不僅會執(zhí)行語句序列2,還會執(zhí)行其后的語句,一直執(zhí)行至遇到break語句為止。
【例3-5】用switch語句重新編寫例3-4的程序。
【程序】

【運(yùn)行結(jié)果】
第1次運(yùn)行:

第2次運(yùn)行:

【程序說明】
程序中op的值是用隨機(jī)方法生成的,其值只能是0、1或2。因此,default分支對應(yīng)op的值為2的情況,也可以替換為case 2。另外,default分支后面沒有其他分支,因此語句序列后面可以沒有break語句。
- UNIX編程藝術(shù)
- CockroachDB權(quán)威指南
- 編程卓越之道(卷3):軟件工程化
- 區(qū)塊鏈架構(gòu)與實(shí)現(xiàn):Cosmos詳解
- 匯編語言程序設(shè)計(jì)(第2版)
- 機(jī)器學(xué)習(xí)與R語言實(shí)戰(zhàn)
- Getting Started with Python
- Photoshop CC移動UI設(shè)計(jì)案例教程(全彩慕課版·第2版)
- Google Maps JavaScript API Cookbook
- Java面試一戰(zhàn)到底(基礎(chǔ)卷)
- CISSP in 21 Days(Second Edition)
- Visual C++ 開發(fā)從入門到精通
- HTML 5與CSS 3權(quán)威指南(第4版·上冊)
- Activiti權(quán)威指南
- Instant PhoneGap