Java語(yǔ)言程序控制語(yǔ)句.ppt
《Java語(yǔ)言程序控制語(yǔ)句.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java語(yǔ)言程序控制語(yǔ)句.ppt(69頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第3章Java語(yǔ)言程序控制語(yǔ)句 簡(jiǎn)單語(yǔ)句和復(fù)合語(yǔ)句標(biāo)準(zhǔn)輸入輸出語(yǔ)句3 1選擇語(yǔ)句3 2循環(huán)語(yǔ)句3 3跳轉(zhuǎn)語(yǔ)句數(shù)組3 4斷言3 5Java程序示例 簡(jiǎn)單語(yǔ)句和復(fù)合語(yǔ)句 語(yǔ)句是程序的基本組成單位 1 簡(jiǎn)單語(yǔ)句變量說明語(yǔ)句 賦值語(yǔ)句 方法調(diào)用語(yǔ)句 空語(yǔ)句等被稱為簡(jiǎn)單語(yǔ)句 在Java語(yǔ)言中 一個(gè)簡(jiǎn)單語(yǔ)句總是以分號(hào)結(jié)尾的 例 inta 1 b 變量說明語(yǔ)句b 2 賦值語(yǔ)句 空語(yǔ)句System out print b 方法調(diào)用語(yǔ)句 2 復(fù)合語(yǔ)句復(fù)合語(yǔ)句 由大括號(hào) 括起來的語(yǔ)句 復(fù)合語(yǔ)句的 內(nèi)可放0 n個(gè)語(yǔ)句 每條語(yǔ)句都應(yīng)該符合Java語(yǔ)句的語(yǔ)法 例 if a 0 z a a b b z Java的輸入和輸出使用方法調(diào)用語(yǔ)句 計(jì)算機(jī)支持多種輸入和輸出設(shè)備 例如 鼠標(biāo) 鍵盤 掃描儀等是輸入設(shè)備 顯示器 打印機(jī)等是輸出設(shè)備 標(biāo)準(zhǔn)I O操作是指通過標(biāo)準(zhǔn)輸入 輸出設(shè)備進(jìn)行的輸入和輸出操作 一般用鍵盤作為標(biāo)準(zhǔn)的輸入設(shè)備 顯示器則是標(biāo)準(zhǔn)的輸出設(shè)備 在Java中 通過System in和System out對(duì)象分別與鍵盤和顯示器發(fā)生聯(lián)系而完成程序信息的輸入和輸出 標(biāo)準(zhǔn)輸入輸出語(yǔ)句 I O System out對(duì)象包含著多個(gè)向顯示器輸出數(shù)據(jù)的方法 System out對(duì)象中包含的最常用的方法是 print 輸出一項(xiàng)數(shù)據(jù)但不換行println 輸出一項(xiàng)數(shù)據(jù)后換行例如 System out print Example System out print InputName 執(zhí)行后將輸出 Example InputName 代碼 System out println Example System out println InputName 執(zhí)行上述代碼將輸出如下結(jié)果 Example InputName 1 標(biāo)準(zhǔn)輸出System out對(duì)象 如果要用一個(gè)語(yǔ)句輸出多個(gè)數(shù)據(jù)項(xiàng) 則數(shù)據(jù)項(xiàng)之間要用 連接 如 Stringstr1 abc intn 11 m 22 System out print str1 ABC 輸出 abcABCSystem out print 1 ABC 輸出 1ABC要將數(shù)值型變量的值分別輸出 則必須在中間加入空格字符串 或空串 如 System out print n m 輸出 33System out print n m 輸出 1122System out print n m 輸出 1122 System in對(duì)象用于在程序運(yùn)行時(shí)從鍵盤接收輸入 在Java中輸入數(shù)據(jù)時(shí) 為了處理輸入數(shù)據(jù)的過程中可能出現(xiàn)的錯(cuò)誤 需要使用異常處理 以使程序具有 堅(jiān)固性 異常處理的詳細(xì)介紹在第5章 有兩種異常處理格式實(shí)現(xiàn)輸入 使用try catch語(yǔ)句與read方法 使用throwsIOException與read方法下面是從鍵盤讀一個(gè)字符 一個(gè)字符串或一個(gè)整數(shù)的程序示例 當(dāng)程序中需要實(shí)現(xiàn)鍵盤輸入功能時(shí)可以參考這些例子 2 標(biāo)準(zhǔn)輸入System in對(duì)象 importjava io 引入java io中的類 輸入輸出類 因程序中要 用到輸入輸出類的read 方法 表示引入該包中下面所有用到的類publicclassReadChar publicstaticvoidmain Stringargs throwsIOException 主方法拋出異常 charch char System in read 調(diào)用read方法 讀一個(gè) 字節(jié)數(shù)據(jù) 一個(gè)字符的ASCII碼值 存于ch中System out print ch 例 從鍵盤讀一個(gè)字符 使用throwsIOException與read方法 例 從鍵盤讀一數(shù)字串并轉(zhuǎn)化為整數(shù) importjava io classReadStringOrInt publicstaticvoidmain Stringargs throwsIOException bytebuf newbyte 20 20個(gè)字節(jié)的數(shù)組用于存字符串Stringstr intanInt System in read buf 從鍵盤讀一個(gè)數(shù)字串保存于buf中str newString buf buf轉(zhuǎn)換成String對(duì)象str ASCII字符串轉(zhuǎn)換成Unicode碼串 anInt Integer parseInt str trim 數(shù)字串轉(zhuǎn)換成整數(shù)System out print anInt 要將數(shù)字串轉(zhuǎn)換成實(shí)數(shù) 則 floatf Float parseFloat str trim 轉(zhuǎn)成單精度數(shù)doubled Double parseDouble str trim 轉(zhuǎn)成雙精度數(shù) 一般而言 Java程序中的語(yǔ)句是順序執(zhí)行的 也就是說 按照程序中語(yǔ)句出現(xiàn)的次序從第一條開始依次執(zhí)行到最后一條 如果需要根據(jù)某個(gè)條件來決定下面該進(jìn)行什么操作 或是某些事情應(yīng)根據(jù)需要不斷重復(fù)地去做 這時(shí)就需要用到流程控制語(yǔ)句來控制程序中語(yǔ)句的執(zhí)行順序 3 1選擇語(yǔ)句 3 1 1if語(yǔ)句3 1 2switch語(yǔ)句 簡(jiǎn)單if語(yǔ)句的執(zhí)行流程如下圖所示 if else語(yǔ)句根據(jù)判定條件的真假來執(zhí)行兩種操作中的一種 1 簡(jiǎn)單形式 語(yǔ)法形式 if 布爾表達(dá)式 語(yǔ)句注意 if語(yǔ)句中的條件必須是布爾表達(dá)式 這點(diǎn)與C 是不同的 C 中可以是一般的算術(shù)表達(dá)式 語(yǔ)句可以是復(fù)合語(yǔ)句 例 if min b min b 3 1 1if語(yǔ)句 條件 布爾表達(dá)式 語(yǔ)句 if的后繼語(yǔ)句 false true 簡(jiǎn)單if語(yǔ)句的執(zhí)行流程圖 語(yǔ)法形式 if 布爾表達(dá)式 語(yǔ)句1else語(yǔ)句2注意 條件必須是布爾表達(dá)式 語(yǔ)句1 語(yǔ)句2可以是復(fù)合語(yǔ)句 例 if a b min a elsemin b 帶else部分的if語(yǔ)句的執(zhí)行流程如下圖所示 條件 2 完全形式 布爾表達(dá)式 if的后繼 false true 有else部分的if語(yǔ)句的執(zhí)行流程 語(yǔ)句1 語(yǔ)句2 if語(yǔ)句中內(nèi)嵌的語(yǔ)句又是if語(yǔ)句的情況稱為if語(yǔ)句的嵌套 如 if 布爾表達(dá)式1 語(yǔ)句1elseif 布爾表達(dá)式2 語(yǔ)句2 elseif 布爾表達(dá)式m 語(yǔ)句melse語(yǔ)句n 3 if語(yǔ)句的嵌套 程序從上往下依次判斷布爾表達(dá)式的條件 一旦某個(gè)條件滿足 即布爾表達(dá)式的值為true 就執(zhí)行相關(guān)的語(yǔ)句 然后就不再判斷其余的條件 直接轉(zhuǎn)到if語(yǔ)句的后續(xù)語(yǔ)句去執(zhí)行 Java規(guī)定 else總是與離它前面最近的if配對(duì) 如果需要 可以通過使用花括號(hào) 來改變配對(duì)關(guān)系 如 1 if x 1 2 if x 1 if y 1 if y 1 aa 1 aa 1 elseaa 2 elseaa 2 1 此處的else與if y 1 相配 2 此處的else與if x 1 相配 例 求一元二次方程 ax2 bx c 0 的根 publicclassroots publicstaticvoidmain Stringargs inta b c check floatx1 x2 a 1 b 2 c 1 check b b 4 a c if check 0 x1 b 2 a x2 x1 System out println x1 x1 System out println x2 x2 elseif check 0 x1 b float Math sqrt check 2 a x2 b float Math sqrt check 2 a System out println x1 x1 System out println x2 x2 else 請(qǐng)自己填寫 練習(xí) 編寫一程序 運(yùn)行后從鍵盤輸入二個(gè)整數(shù) 輸出其中的最小數(shù) 課堂練習(xí) 求最小數(shù) importjava io publicclassMin publicstaticvoidmain Stringargs throwsIOException bytebuf newbyte 20 Stringstr inta b min System out println 請(qǐng)輸入二個(gè)整數(shù) System in read buf 從鍵盤讀一數(shù)字串存于buf中str newString buf buf轉(zhuǎn)換成字符串a(chǎn) Integer parseInt str trim 數(shù)字串轉(zhuǎn)換成整數(shù)System in read buf str newString buf b Integer parseInt str trim min a if min b min b System out println 最小數(shù)是 min 3 1 2switch語(yǔ)句 switch語(yǔ)句根據(jù)測(cè)試表達(dá)式的結(jié)果來執(zhí)行多個(gè)可能操作中的一個(gè) 它的語(yǔ)法形式如下 switch語(yǔ)句的流程如下所示 switch 測(cè)試表達(dá)式 case常量1 語(yǔ)句塊1 break case常量2 語(yǔ)句塊2 break case常量n 語(yǔ)句塊n break default 語(yǔ)句塊n 1 測(cè)試表達(dá)式 語(yǔ)句塊1 break 語(yǔ)句塊2 break break 語(yǔ)句塊n 語(yǔ)句塊n 1 后繼語(yǔ)句 常量2 default switch語(yǔ)句的流程圖 常量1 常量n switch語(yǔ)句中的每個(gè) case常量 稱為一個(gè)case子句 代表一個(gè)case分支的入口 switch語(yǔ)句的注意點(diǎn)如下 1 測(cè)試表達(dá)式必須是byte char short int類型的表達(dá)式 而不能使用浮點(diǎn)類型或long類型 也不能為一個(gè)字符串 2 switch語(yǔ)句將測(cè)試表達(dá)式的值依次與每個(gè)case子句中的常量值相比較 如果匹配成功 則執(zhí)行該case子句中常量值后的語(yǔ)句 直到遇到break語(yǔ)句為止 3 case子句中常量的類型必須與測(cè)試表達(dá)式的類型相容 而且每個(gè)case子句中常量的值必須是不同的 常量也可以是常量表達(dá)式 不含變量 方法的表達(dá)式 4 default子句是可選的 當(dāng)測(cè)試表達(dá)式的值與任一case子句中的值都不匹配時(shí) 就執(zhí)行default后的語(yǔ)句 如果表達(dá)式的值與任一case子句中的值都不匹配且沒有default子句 則程序不執(zhí)行任何操作 而是直接跳出switch語(yǔ)句 進(jìn)入后續(xù)程序段的執(zhí)行 5 break語(yǔ)句用來在執(zhí)行完一個(gè)case分支后 使程序跳出switch語(yǔ)句 執(zhí)行switch語(yǔ)句的后續(xù)語(yǔ)句 因?yàn)閏ase子句只是起到一個(gè)標(biāo)號(hào)的作用 用來查找匹配的入口 然后從此處開始執(zhí)行 對(duì)后面的case子句的值不再進(jìn)行比較 而是直接執(zhí)行其后的語(yǔ)句 因此一般情況下 每個(gè)case分支后 要用break來終止后面的case分支語(yǔ)句的執(zhí)行 6 case分支中包括多個(gè)執(zhí)行語(yǔ)句時(shí) 可以不用花括號(hào)括起 7 通過if else語(yǔ)句可以實(shí)現(xiàn)switch語(yǔ)句所有的功能 但通常使用switch語(yǔ)句更簡(jiǎn)練 且可讀性強(qiáng) 程序的執(zhí)行效率也高 8 if else語(yǔ)句可以基于一個(gè)范圍內(nèi)的值或一個(gè)條件來進(jìn)行不同的操作 但switch語(yǔ)句中的每個(gè)case子句都必須對(duì)應(yīng)一個(gè)單值 classSwitchDemo publicstaticvoidmain Stringargs intmonth 7 Stringseason switch month case12 case1 case2 season 冬季 break case3 case4 case5 season 春季 break case6 case7 case8 season 夏季 break case9 case10 case11 season 秋季 break default season 錯(cuò) System out println month 月是 season ss 例 用switch語(yǔ)句判斷一個(gè)月份屬于一年中哪個(gè)季節(jié) 春 夏 秋 冬 方法一 循環(huán)語(yǔ)句的作用是反復(fù)執(zhí)行同一段代碼直到滿足結(jié)束條件 許多問題中需要用到循環(huán)控制 例如累加 累乘等 Java循環(huán)語(yǔ)句有while do while和for三種 3 2循環(huán)語(yǔ)句 3 2 1while語(yǔ)句3 2 2do while語(yǔ)句3 2 3for語(yǔ)句循環(huán)嵌套 while語(yǔ)句形式如下 while 布爾表達(dá)式 語(yǔ)句while語(yǔ)句執(zhí)行的過程為 執(zhí)行while語(yǔ)句時(shí) 首先判斷布爾表達(dá)式的值 當(dāng)布爾表達(dá)式的值為true 則執(zhí)行循環(huán)體 然后再判斷條件 直到布爾表達(dá)式的值為false 停止執(zhí)行語(yǔ)句 使用while語(yǔ)句應(yīng)注意以下兩點(diǎn) 1 該語(yǔ)句是先判斷后執(zhí)行 若一開始條件就不成立 就不執(zhí)行循環(huán)體 2 在循環(huán)體內(nèi)一定要有改變條件的語(yǔ)句 否則是死循環(huán) while語(yǔ)句的流程圖如下所示 3 2 1while語(yǔ)句 布爾表達(dá)式 循環(huán)體 false true while語(yǔ)句流程圖 classsum publicstaticvoidmain Stringargs intn 100 循環(huán)總數(shù)n 100inti 1 循環(huán)次數(shù) 初值為 floats 0 和s為實(shí)型while i n 循環(huán)條件 循環(huán)總數(shù)100 s s 1 0f i s增加1 i 1 0f表示是float型i 循環(huán)次數(shù)加 System out println s s 例 用while循環(huán)語(yǔ)句計(jì)算s 1 1 2 1 3 1 100 Java還提供了另一個(gè)與while語(yǔ)句類似的語(yǔ)句 do while語(yǔ)句 do while語(yǔ)句的語(yǔ)法形式如下 do語(yǔ)句while 布爾表達(dá)式 do while語(yǔ)句執(zhí)行的過程為 先執(zhí)行一次循環(huán)體中的語(yǔ)句 然后測(cè)試布爾表達(dá)式的值 如果布表達(dá)式的值為真 那就繼續(xù)執(zhí)行循環(huán)體 do while語(yǔ)句將不斷地測(cè)試布爾表達(dá)式的值并執(zhí)行循環(huán)體中的內(nèi)容 直到布爾表達(dá)式的值為假為止 do while語(yǔ)句的流程圖如下所示 3 2 2do while語(yǔ)句 布爾表達(dá)式 循環(huán)體 true false Do while語(yǔ)句流程圖 do while語(yǔ)句和while語(yǔ)句的不同之處是 do while語(yǔ)句總是先進(jìn)入循環(huán) 執(zhí)行一次循環(huán)體后才檢測(cè)循環(huán)條件 以決定是否繼續(xù)循環(huán) 而while語(yǔ)句是先測(cè)試條件 再?zèng)Q定是否進(jìn)入循環(huán) 所以 用do while語(yǔ)句時(shí) 循環(huán)體至少執(zhí)行一次 例 用do while循環(huán)語(yǔ)句計(jì)算s 1 1 2 1 3 1 4 1 100 classsum publicstaticvoidmain Stringargs inti 1 循環(huán)次數(shù) 初值為 floats 0 和s為實(shí)型do 循環(huán)條件 s s 1 0f i s增加1 i 1 0f表示是float型i 循環(huán)次數(shù)加 while i 100 要循環(huán)100次System out println s s for語(yǔ)句是循環(huán)的另一種表示形式 for語(yǔ)句的語(yǔ)法形式為 for 表達(dá)式1 表達(dá)式2 表達(dá)式3 語(yǔ)句for是for語(yǔ)句的關(guān)鍵字 語(yǔ)句為for語(yǔ)句的循環(huán)體 若有多個(gè)語(yǔ)句 需構(gòu)成復(fù)合語(yǔ)句 for語(yǔ)句中循環(huán)控制變量必須是有序類型 常用的有整型 字符型 布爾型 循環(huán)控制變量初值和終值通常是與控制變量類型相一致的一個(gè)常量 也可以是表達(dá)式 循環(huán)次數(shù)由初值和終值決定 執(zhí)行過程 1 按表達(dá)式1將初值賦給循環(huán)控制變量 2 按表達(dá)式2判斷循環(huán)是否成立 即判斷控制變量的值 3 2 3for語(yǔ)句 是否越過終值 未越過終值為條件成立 越過終值為條件不成立 若條件不成立 轉(zhuǎn)步驟 6 3 若條件成立 則執(zhí)行循環(huán)體 4 按表達(dá)式3修改控制變量 對(duì)于遞增型為原控制變量值的后續(xù) 對(duì)于遞減型為原控制變量值的前導(dǎo) 5 返回步驟 2 6 結(jié)束循環(huán) 求解表達(dá)式1 表達(dá)式2 循環(huán)體 求解表達(dá)式3 for語(yǔ)句的下一語(yǔ)句 false true for語(yǔ)句的流程圖 例 求Fibonacci數(shù)列的前40個(gè)數(shù)項(xiàng) Fibonacci數(shù)列 1 1 2 3 5 8 13 21 34 從數(shù)列看到 F1 1 n 1 F2 1 n 2 Fn Fn 1 Fn 2 n 3 for語(yǔ)句使用的一些技巧 有時(shí) for語(yǔ)句在表達(dá)式1和表達(dá)式3的位置上需要包含多個(gè)表達(dá)式 這時(shí)可使用Java提供的逗號(hào)運(yùn)算符來實(shí)現(xiàn) 逗號(hào)運(yùn)算符是用逗號(hào) 分隔多個(gè)表達(dá)式 被看作一個(gè)表達(dá)式 這樣就可以在只能放一個(gè)表達(dá)式的地方放任意多個(gè)表達(dá)式 只須用逗號(hào)將它們分隔開 如 for i 1 j 10 i j i j 表達(dá)式1 表達(dá)式2及表達(dá)式3都可以為空語(yǔ)句 但分號(hào)不能省略 三者均為空的時(shí)候 相當(dāng)于一個(gè)無限循環(huán) 如 for 注意點(diǎn) 由于Java語(yǔ)句是用分號(hào)結(jié)束的 一個(gè)容易犯的錯(cuò)誤是在for語(yǔ)句的圓括號(hào)后面加了一個(gè)不應(yīng)有的分號(hào) 例如 下面的程序是想要計(jì)算 1 2 99 在上例中 分號(hào)被放在循環(huán)體的前邊 相當(dāng)于for語(yǔ)句的循環(huán)體為空語(yǔ)句 其結(jié)果是for循環(huán)體什么都不處理 此程序的編譯不會(huì)出任何錯(cuò)誤 但當(dāng)它運(yùn)行時(shí)并不產(chǎn)生預(yù)期的結(jié)果 運(yùn)行上面這個(gè)程序會(huì)得到如下輸出結(jié)果 value 100 一般來說 在循環(huán)次數(shù)預(yù)知的情況下 用for語(yǔ)句比較方便 而while語(yǔ)句和do while語(yǔ)句比較適合于循環(huán)次數(shù)不能預(yù)先確定的情況 循環(huán)嵌套 一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu) 稱為循環(huán)的嵌套 內(nèi)嵌的循環(huán)中還可以嵌套循環(huán) 這就是多重循環(huán) 上述三種循環(huán) while循環(huán) do while循環(huán)和for循環(huán) 語(yǔ)句之間可以相互嵌套使用 例 打印下面的數(shù)字圖案 每行打5個(gè)數(shù)字 每行各列數(shù)的值等于第一列數(shù)乘自己所在列號(hào) 12345246810369121548121620510152025 循環(huán)嵌套 publicclassLoop Loop publicstaticvoidmain Stringargs intI J K I表示行號(hào) J表示列號(hào) K存臨時(shí)計(jì)算的值for I 1 I 5 I for J 1 J 5 J K I J System out print K System out println 每打5列換行 例 百雞問題 已知公雞5元1只 母雞3元一只 小雞1元3只 要求用100元?jiǎng)偤觅I100只雞 問有多少種采購(gòu)方案 分析 設(shè)變量I J K分別代表公雞數(shù) 母雞數(shù)及小雞數(shù) 則應(yīng)滿足下列一些條件 I J K 100 只 I J K 0 5I 3J K 3 100 元 若用100元全部買公雞 最多只能買20只 所以I 20 同樣地母雞最多只能買33只 所以J 33 而小雞數(shù)目就是100 I J 根據(jù)以上分析 可編程如下 例 百雞問題 publicclassLoop Loop publicstaticvoidmain Stringargs intI J K System out println 公雞母雞小雞 for I 0 I 20 I for J 0 J 33 J K 100 I J if 5 I 3 J K 3 0 100 注意 K 3 0 System out println I J K 循環(huán)語(yǔ)句正常結(jié)束是在循環(huán)條件表達(dá)式的值變?yōu)閒alse的時(shí)候 但有時(shí)即使測(cè)試的條件為true 也希望循環(huán)立即終止 這時(shí)可以用跳轉(zhuǎn)語(yǔ)句break或continue語(yǔ)句實(shí)現(xiàn) continue語(yǔ)句只能用于循環(huán)語(yǔ)句中 break可用于switch語(yǔ)句中 亦可用于循環(huán)語(yǔ)句中注意 Java中不支持goto語(yǔ)句 3 3跳轉(zhuǎn)語(yǔ)句 3 3 1break語(yǔ)句3 3 2continue語(yǔ)句 break語(yǔ)句的一般語(yǔ)法格式為 break 標(biāo)號(hào) 其中 用 括起的標(biāo)號(hào)部分是可選的 1 不帶標(biāo)號(hào)的情況此時(shí) break語(yǔ)句的功能是終止break所在的循環(huán)語(yǔ)句 轉(zhuǎn)去執(zhí)行其后的第一條語(yǔ)句 對(duì)于不帶標(biāo)號(hào)的break語(yǔ)句 在執(zhí)行時(shí)有兩個(gè)特點(diǎn) 1 在有多重循環(huán)時(shí) 它只能使循環(huán)從本層的循環(huán)跳出來 2 跳出循環(huán)后轉(zhuǎn)移到本層循環(huán)的下一個(gè)語(yǔ)句 3 3 1break語(yǔ)句 publicclassbreakout publicstaticvoidmain Stringargs throwsIOException intI J K charch for I 1 I 1 I 最外層循環(huán)for J 1 J 2 J 第二層循環(huán) for K 1 K 2 K 內(nèi)層循環(huán) ch char System in read if ch c break 結(jié)束內(nèi)層循環(huán)語(yǔ)句System out println 333 if ch b break 結(jié)束第二層循環(huán)語(yǔ)句System out println 222 if ch a break 結(jié)束最外層循環(huán)語(yǔ)句System out println 111 例 不帶標(biāo)號(hào)的break語(yǔ)句 2 帶標(biāo)號(hào)的情況標(biāo)號(hào)就是加在語(yǔ)句前面的一個(gè)合法的標(biāo)識(shí)符 其后跟一個(gè)冒號(hào) 如下所示 標(biāo)號(hào) 語(yǔ)句標(biāo)號(hào)只是起到對(duì)語(yǔ)句標(biāo)識(shí)的作用 帶標(biāo)號(hào)的break語(yǔ)句的功能是使程序結(jié)束標(biāo)號(hào)指明的外層循環(huán)語(yǔ)句 執(zhí)行該外層循環(huán)語(yǔ)句的后繼語(yǔ)句 標(biāo)號(hào)應(yīng)該定義在 要結(jié)束的 外層循環(huán)語(yǔ)句的開始處 帶標(biāo)號(hào)的break語(yǔ)句的一種典型用法就是實(shí)現(xiàn)break語(yǔ)句所在的循環(huán)的外層循環(huán)語(yǔ)句 從內(nèi)部直接跳出來 例如 importjava io classbreakto A publicstaticvoidmain Stringargs throwsIOException inti j charch A 標(biāo)號(hào)A 外層循環(huán)for i 1 i 2 i for j 1 j 1 j 內(nèi)層循環(huán) ch char System in read if ch a breakA 結(jié)束A對(duì)應(yīng)的循環(huán)語(yǔ)句 外層循環(huán) System out println 222 System out println 111 continue語(yǔ)句只能在循環(huán)語(yǔ)句中使用 它和break語(yǔ)句的區(qū)別是continue語(yǔ)句只結(jié)束所在循環(huán)語(yǔ)句的本次循環(huán) 而不是終止整個(gè)循環(huán)語(yǔ)句的執(zhí)行 而break語(yǔ)句則是結(jié)束整個(gè)循環(huán)語(yǔ)句的執(zhí)行 continue語(yǔ)句的一般語(yǔ)法格式為 continue 標(biāo)號(hào) 其中 用 括起的標(biāo)號(hào)部分是可選的 1 不帶標(biāo)號(hào)的使用情況此時(shí) continue語(yǔ)句用來結(jié)束所在循環(huán)語(yǔ)句的本次循環(huán) 即跳過循環(huán)體中continue語(yǔ)句后面的語(yǔ)句 回到循環(huán)體的條件測(cè)試部分繼續(xù)執(zhí)行 不帶標(biāo)號(hào)continue語(yǔ)句和不帶標(biāo)號(hào)的break語(yǔ)句類似 只能對(duì)所在一層的循環(huán)起作用 3 3 2continue語(yǔ)句 publicclasscontinueto publicstaticvoidmain Stringargs throwsIOException intI J charch for I 1 I 1 I 外層循環(huán)for J 1 J 2 J 內(nèi)層循環(huán) ch char System in read if ch b continue 結(jié)束內(nèi)層循環(huán)的本次循環(huán)System out println 沒有結(jié)束內(nèi)循環(huán) if ch a continue 結(jié)束外層循環(huán)的本次循環(huán)System out println 沒有結(jié)束外循環(huán) 例 不帶標(biāo)號(hào)的continue語(yǔ)句 2 帶標(biāo)號(hào)的使用情況此時(shí) continue語(yǔ)句跳過標(biāo)號(hào)所指的循環(huán)語(yǔ)句所有余下部分語(yǔ)句 回到標(biāo)號(hào)所指循環(huán)語(yǔ)句塊的條件測(cè)試部分繼續(xù)執(zhí)行 注意標(biāo)號(hào)應(yīng)該定義在外層循環(huán)語(yǔ)句的開始處 下面是一個(gè)使用帶標(biāo)號(hào)的continue語(yǔ)句的例子 importjava io classcontinue A publicstaticvoidmain Stringargs throwsIOException inti j charch A 標(biāo)號(hào)A 外層循環(huán)for i 1 i 2 i for j 1 j 1 j 內(nèi)層循環(huán) ch char System in read if ch a continueA 結(jié)束A對(duì)應(yīng)的循環(huán)語(yǔ)句的本次循環(huán)System out println 本次內(nèi)循環(huán)正常結(jié)束 System out println 本次外循環(huán)正常結(jié)束 1一維數(shù)組2多維數(shù)組 數(shù)組是相同類型的數(shù)據(jù)元素按順序組成的一種復(fù)合數(shù)據(jù)類型 元素在數(shù)組中的相對(duì)位置由下標(biāo)來指明 數(shù)組中的每個(gè)元素通過數(shù)組名加下標(biāo)進(jìn)行引用 數(shù)組作為一種特殊的數(shù)據(jù)類型具有以下特點(diǎn) 1 一個(gè)數(shù)組中所有的元素應(yīng)該是同一類型 2 數(shù)組中的元素是有順序的 3 數(shù)組中的一個(gè)元素通過數(shù)組名和數(shù)組下標(biāo)來確定 數(shù)組 1 一維數(shù)組的說明與構(gòu)造與C 中不同的是 Java中數(shù)組要用new操作符實(shí)例化才可使用 所以建立一個(gè)數(shù)組需要兩步 聲明數(shù)組 實(shí)例化格式 類型數(shù)組名 或 類型 數(shù)組名 數(shù)組名 new類型 數(shù)組長(zhǎng)度 說明 第一行聲明一個(gè)數(shù)組名 并指明數(shù)組類型 可任何類型 和維數(shù) 第二行使用new操作符構(gòu)造數(shù)組并初始化 缺省值 即為數(shù)組元素分配存儲(chǔ)空間 并為每個(gè)數(shù)組元素都賦予一個(gè)初值 1 一維數(shù)組 上面的第二步實(shí)例化可以暫時(shí)不做 到需要時(shí)再完成 也可將上面的二步合并為一步 類型數(shù)組名 new類型 數(shù)組長(zhǎng)度 例 intlist 聲明一個(gè)整型數(shù)組list newint 3 為上面聲明的數(shù)組分配3個(gè)整數(shù)元素 的內(nèi)存空間 并使每個(gè)元素初值為0合并為一步 intlist newint 3 2 數(shù)組的初始化數(shù)組初始化就是為數(shù)組元素指定初始值 通常在構(gòu)造數(shù)組時(shí) Jave會(huì)使每個(gè)數(shù)組元素初始化為一個(gè)默認(rèn)值 但在許多情況下 并不希望數(shù)組的初值為默認(rèn)值 此時(shí) 就需要用賦值語(yǔ)句來對(duì)數(shù)組進(jìn)行初始化 數(shù)組的初始化方式有兩種 一 像初始化簡(jiǎn)單類型一樣自動(dòng)初始化數(shù)組 不用new 即在說明數(shù)組的同時(shí)進(jìn)行初始化 稱為靜態(tài)初始化 二 僅用new創(chuàng)建數(shù)組 讓它取缺省值 到以后再為元素賦值 稱為動(dòng)態(tài)初始化 例 inta 1 2 3 4 5 靜態(tài)初始化intlist newint 3 動(dòng)態(tài)初始化上面的第一個(gè)語(yǔ)句聲明并創(chuàng)建了數(shù)組a 并且為數(shù)組每個(gè)元素賦初值 結(jié)果為 a 0 1 a 1 2 a 2 3 a 3 4 a 4 5上面的第二個(gè)語(yǔ)句僅聲明并創(chuàng)建了數(shù)組a 并未給數(shù)組賦初值 由Jave為數(shù)組元素默認(rèn)初始化 于是得到三個(gè)元素并且都有初值 list 0 0 list 1 0 list 2 0注意 中所有數(shù)據(jù)的類型必須與數(shù)組的類型相同 3 數(shù)組元素的使用數(shù)組被實(shí)例化后 就可以在程序中像使用任何變量一樣來使用數(shù)組元素 即可以在任何允許使用變量的地方使用數(shù)組元素 數(shù)組元素的標(biāo)識(shí)方式為 數(shù)組名 下標(biāo) 例 a 3 b i c i 5 下標(biāo)的取值范圍是從0開始 一直到數(shù)組的長(zhǎng)度減1 對(duì)于上面例子中的list數(shù)組來說 它有3個(gè)元素 分別為 list 0 list 1 list 2 注意 不存在list 3 注意 1 下標(biāo)只能為byte short int或char類型 不能為long 2 Java在程序編譯時(shí)并不對(duì)數(shù)組下標(biāo)進(jìn)行越界檢查 但在運(yùn)行時(shí)會(huì)對(duì)數(shù)組下標(biāo)進(jìn)行越界檢查 以保證安全性 Java中的數(shù)組實(shí)際是Array類的一個(gè)對(duì)象 定義一個(gè)數(shù)組實(shí)際就是創(chuàng)建Array類的一個(gè)對(duì)象 該類中還有一些屬性和方法供數(shù)組使用 如對(duì)于每個(gè)數(shù)組都有一個(gè)屬性 length 它指明數(shù)組的長(zhǎng)度 即元素個(gè)數(shù) 由程序自動(dòng)計(jì)算 例如 list length指明了數(shù)組list的長(zhǎng)度 Java中的數(shù)組還可利用數(shù)組名來互相賦值 但要注意 這種賦值實(shí)際是定義一個(gè)別名 即是同一數(shù)組的不同名字的引用 例如 inta 2 4 6 b b a System out println b 1 輸出4b 1 7 System out println a 1 輸出7 4 一維數(shù)組應(yīng)用示例例 編寫一個(gè)程序 在其中建立一個(gè)有10個(gè)整數(shù)的數(shù)組 運(yùn)行后從鍵盤輸入10個(gè)整數(shù)放入數(shù)組 然后輸出其中的最大數(shù) importjava io publicclassArray1 publicstaticvoidmain Stringargs throwsIOException inti max a newint 10 bytebuf newbyte 20 Stringstr 程序如下 System out println 請(qǐng)輸入10個(gè)數(shù) for i 0 i 9 i 輸入10個(gè)數(shù) 以回車分隔 System in read buf str newString buf a i Integer parseInt str trim max a 0 for i 1 i 9 i 找最大數(shù)if max a i max a i System out println 最大數(shù)是 max 與C 中類似 在Java中 當(dāng)一維數(shù)組中的類型又是一個(gè)一維數(shù)組時(shí) 就構(gòu)成了二維數(shù)組 以此類推 可構(gòu)成更高維的數(shù)組 所以 多維數(shù)組是通過對(duì)一維數(shù)組的嵌套聲明來實(shí)現(xiàn)的 多維數(shù)組與一維數(shù)組一樣 需要聲明并實(shí)例化后才可使用 下面主要以二維數(shù)組為例來說明用法 1 二維數(shù)組的說明與創(chuàng)建二維數(shù)組說明的格式為 類型數(shù)組名 或類型 數(shù)組名 例如 intintArray 與一維數(shù)組一樣 此時(shí)還沒有為數(shù)組元素分配內(nèi)存空間 還需要用new關(guān)鍵字來創(chuàng)建數(shù)組 然后才可以使用該數(shù)組的每個(gè)元素 2 多維數(shù)組 對(duì)二維數(shù)組來說 分配內(nèi)存空間有下面幾種方法 直接為每一維分配空間 如 inta newint 2 3 該語(yǔ)句創(chuàng)建了一個(gè)二維數(shù)組a 其較高一維含兩個(gè)元素 每個(gè)元素為由3個(gè)整型數(shù)構(gòu)成的一維整型數(shù)組 如下所示 從最高維開始 分別為每一維分配空間 如 intb newint 2 最高維含2個(gè)元素 每 個(gè)元素為一個(gè)整型數(shù)組b 0 newint 3 最高維第一個(gè)元素是一個(gè)長(zhǎng)度 為3的整型數(shù)組b 1 newint 5 最高維第二個(gè)元素是一個(gè)長(zhǎng)度 為5的整型數(shù)組下圖為該數(shù)組的示意圖 注意 在使用運(yùn)算符new來分配內(nèi)存時(shí) 對(duì)于多維數(shù)組至少要給出最高維的大小 如果在程序中出現(xiàn)inta2 newint 編譯器將要提示如下錯(cuò)誤 Arraydimensionmissing2 二維數(shù)組元素的初始化二維數(shù)組元素的初始化同一維數(shù)組一樣有兩種方式 1 在說明數(shù)組的同時(shí)進(jìn)行初始化 2 僅用new創(chuàng)建數(shù)組 讓它取缺省值 到以后再為元素賦值 稱為動(dòng)態(tài)初始化 例 inta 1 2 3 4 5 6 該語(yǔ)句聲明了一個(gè)有6個(gè)元素的二維數(shù)組并初始化為 a 0 0 1a 1 0 2 a 1 1 3a 2 0 4 a 2 1 5 a 2 2 63 二維數(shù)組元素的引用對(duì)二維數(shù)組中每個(gè)元素 其引用方式為 數(shù)組名 下標(biāo)1 下標(biāo)2 其中下標(biāo)1 下標(biāo)2為非負(fù)的整型常數(shù)或表達(dá)式 如 a 2 3 cc i 2 j 3 i j為整型 等 同樣 每一維的下標(biāo)取值都從0開始 4 二維數(shù)組應(yīng)用示例例 編寫一個(gè)程序 計(jì)算4行4列整數(shù)矩陣的對(duì)角線元素之和 程序如下 publicclassArray2 publicstaticvoidmain Stringargs inti sum 0 inta 5 3 1 2 2 4 6 8 3 5 7 1 6 4 9 2 for i 0 i 3 i sum a i i System out println sum 示例1 輸出加法表 123456789123456789102345678910113456789101112456789101112135678910111213146789101112131415789101112131415168910111213141516179101112131415161718 例 編寫程序輸出加法表 加法表如下 3 5Java程序示例 程序 publicclassAdd publicstaticvoidmain Stringargs inti j System out println 123456789 for i 1 i 9 i System out print i for j 1 j 9 j if i j 9 System out print i j 1位數(shù)后空3格elseSystem out print i j 2位數(shù)后空2格System out println 示例2 整數(shù)排序 例 編寫程序 使整型數(shù)組的元素按升序排列 方法 使用采用選擇排序方法 選擇排序方法思想 與書上稍有些不同 n個(gè)元素排序 需要進(jìn)行n 1趟 第1趟找出第1小的元素 與數(shù)組的第1個(gè)元素 即a 0 交換 從而最小的元素放到了最前面 第2趟找出第2小的元素 與數(shù)組的第2個(gè)元素 即a 1 交換 從而第2小的元素放到了第2位上 第n 1趟找出第n 1小的元素 與數(shù)組的第n 1個(gè)元素 即a n 2 交換 從而第n 1小的元素放到了第n 1位上 至此 數(shù)組排序完成 注 書上按降序排列 72 65 42 94 65 28 44 36 74 80 程序 publicclassOrderArray publicstaticvoidmain Stringargs intintArray 42 65 80 74 36 44 28 65 94 72 inti j k temp for i 0 i 8 i k i k存放區(qū)間中最小元素的下標(biāo) 開始時(shí)為區(qū)間的第1個(gè)下標(biāo)for j i 1 j 9 j 找出區(qū)間最小的元素 下標(biāo)記在k中if intArray j intArray k k j temp intArray i intArray i intArray k intArray k temp for i 0 i 9 i System out println intArray i 1 輸出1到100中的偶數(shù) 一行5個(gè) 2 編寫程序 輸入短整數(shù)n 計(jì)算 S 1 1 2 1 2 3 1 2 n 3 編寫求一元二次方程的實(shí)根的程序 4 已知兩個(gè)正整數(shù)m n 編寫求它們的最大公約數(shù)的程序 提示 用輾轉(zhuǎn)相除法 方法 1 求m除n的余數(shù)r 2 如果r為0 則n為最大公約數(shù) 結(jié)束 否則轉(zhuǎn) 3 3 用n置m 用r置n 回到 1 第3章習(xí)題- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Java 語(yǔ)言 程序控制 語(yǔ)句
鏈接地址:http://m.appdesigncorp.com/p-6375005.html