- Java編程講義
- 榮銳鋒 張晨光等編著
- 1568字
- 2022-07-28 18:49:46
3.5.2 continue語句
continue語句與break語句類似,都有兩種用法,可以在循環(huán)體中直接使用,也可以配合標(biāo)簽使用。但兩者在使用上的含義不同,continue在循環(huán)體中直接使用,用來結(jié)束本次循環(huán)直接進(jìn)入下一次循環(huán),配合標(biāo)簽使用則用來實(shí)現(xiàn)類似C語言goto語句的效果,實(shí)現(xiàn)向前跳轉(zhuǎn)。同時(shí),需要注意continue只能用在循環(huán)體中。
1.使用continue退出當(dāng)前循環(huán)
continue語句在循環(huán)體中直接使用可跳出本次循環(huán)體,本次循環(huán)體中剩余的語句將不再執(zhí)行,直接進(jìn)入下一次循環(huán)。換句話說,continue語句可以結(jié)束本次循環(huán),跳到循環(huán)條件處判斷是否進(jìn)入下一次循環(huán)。continue語句可以出現(xiàn)在while循環(huán)、do-while循環(huán)以及for循環(huán)的循環(huán)體中,一般配合if語句進(jìn)行使用,執(zhí)行流程如圖3.13所示。
從圖3.13可以看出,程序碰到continue語句時(shí),之后的語句組2將不再執(zhí)行,直接回到循環(huán)條件處進(jìn)行判斷,根據(jù)判斷結(jié)果來決定是否進(jìn)入下一次循環(huán)。continue語句類似break語句,兩者的區(qū)別在于:continue并不是中斷整個(gè)循環(huán),而是終止當(dāng)前這一次,進(jìn)入下一次循環(huán),并且continue只能出現(xiàn)在循環(huán)體中;break語句出現(xiàn)在循環(huán)體中是終止整個(gè)循環(huán),也可以出現(xiàn)在switch語句中。
接下來,根據(jù)continue的特性,編寫一個(gè)案例:循環(huán)遍歷1~10之間的偶數(shù),4不要打印出來,如例3-16所示。

圖3.13 continue控制循環(huán)流程圖
【例3-16】 Demo0316.java

程序的運(yùn)行結(jié)果如下:
-------循環(huán)遍歷1~10的偶數(shù),4不要打印出來------ 2 6 8 10
例3-16中,第7行是一個(gè)判斷條件,如果i不是偶數(shù),將執(zhí)行continue語句,即終止本次循環(huán),繼續(xù)下一次循環(huán)。意味著在i不是偶數(shù)的情況下,第10~13行將不執(zhí)行,直接執(zhí)行i++,然后進(jìn)行i <= 10判斷,如果條件成立則進(jìn)入下一次循環(huán),否則退出循環(huán)。第10行同樣是一個(gè)判斷條件,如果i的值為4,則執(zhí)行continue語句,即第13行不執(zhí)行,直接執(zhí)行i++,然后進(jìn)行循環(huán)條件判斷,如果成立則進(jìn)入下一次循環(huán),否則退出循環(huán)。如果i是偶數(shù),并且i不等于4,將執(zhí)行第13行,即將其輸出。
continue語句不僅可以在for循環(huán)中使用,也可以在do-while、while循環(huán)中使用,方式相同,都是書寫在循環(huán)體中,碰到continue語句將終止本次循環(huán),進(jìn)入下一次循環(huán)。此處僅舉例了continue語句在for循環(huán)體中的使用,其他情況類似,不再贅述。
2.continue語句配合標(biāo)簽
continue語句可以配合標(biāo)簽使用,該標(biāo)簽必須是為循環(huán)指定的名字,不能是普通代碼塊。當(dāng)程序執(zhí)行到continue語句后,會(huì)回到標(biāo)記的所在位置繼續(xù)指定循環(huán)的下一次循環(huán)。
與break類似,continue所處的循環(huán)也可以是嵌套的,continue后所書寫的標(biāo)簽名可以是當(dāng)前循環(huán)的標(biāo)簽名,也可以是外層循環(huán)的標(biāo)簽名。continue語句可以出現(xiàn)在while、do-while以及for循環(huán)中用來控制語句的跳轉(zhuǎn),在此以for循環(huán)為例進(jìn)行語法的說明,具體語法如下:
標(biāo)簽名1:for(;;) { 循環(huán)1中的語句… 標(biāo)簽名2:for(;;) { 循環(huán)2中的語句1 if (跳轉(zhuǎn)條件) { continue 標(biāo)簽名1/標(biāo)簽名2; } 循環(huán)2中的語句2 } 循環(huán)1中的語句… } 循環(huán)后的代碼…
在此,continue如果跟的是標(biāo)簽名2,則跳轉(zhuǎn)到標(biāo)簽2對(duì)應(yīng)的循環(huán),即中止循環(huán)2的當(dāng)前循環(huán),進(jìn)入下一次循環(huán),與直接使用continue結(jié)果一樣;如果跟的是標(biāo)簽1,則跳轉(zhuǎn)到標(biāo)簽1對(duì)應(yīng)的循環(huán),直接結(jié)束外層循環(huán)的當(dāng)前循環(huán)(循環(huán)1中嵌套的循環(huán)將直接終止),進(jìn)入外層循環(huán)的下一次循環(huán)。此處語法僅僅是兩層嵌套循環(huán),實(shí)際可以是很多層,含義與此一樣。
接下來,利用continue配合標(biāo)簽使用實(shí)現(xiàn)九九乘法表,如例3-17所示。
【例3-17】 Demo0317.java

程序的運(yùn)行結(jié)果如下:
-------九九乘法表------ 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
例3-17中,第6行的a是外層循環(huán)的標(biāo)簽。第7行的b是內(nèi)層循環(huán)的標(biāo)簽。該九九乘法表與之前例3-12九九乘法表有所不同,內(nèi)層循環(huán)條件不是j <= i,而是j <= 10,即從內(nèi)層循環(huán)來看它應(yīng)該循環(huán)10次。第9行是一個(gè)判斷,如果j和i的值相等,則執(zhí)行第10行和第11行語句。第11行意味著繼續(xù)a標(biāo)簽對(duì)應(yīng)的循環(huán),即外層循環(huán),執(zhí)行該語句將結(jié)束內(nèi)層循環(huán),直接進(jìn)行外層循環(huán)的i++,然后進(jìn)行外層循環(huán)的循環(huán)條件判斷,如果條件成立則進(jìn)入外層循環(huán)的下一次循環(huán)。
從結(jié)果很明顯可以看出,內(nèi)層循環(huán)并沒有執(zhí)行10次,而是到達(dá)i == j時(shí)就終止了,進(jìn)入了外層循環(huán)的下一次循環(huán)。
- C語言程序設(shè)計(jì)案例教程(第2版)
- Linux C/C++服務(wù)器開發(fā)實(shí)踐
- Learning Docker
- 數(shù)據(jù)結(jié)構(gòu)習(xí)題精解(C語言實(shí)現(xiàn)+微課視頻)
- 軟件架構(gòu):Python語言實(shí)現(xiàn)
- Mastering Linux Security and Hardening
- Struts 2.x權(quán)威指南
- Puppet:Mastering Infrastructure Automation
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實(shí)踐
- 關(guān)系數(shù)據(jù)庫與SQL Server 2012(第3版)
- Bitcoin Essentials
- C#教程
- R語言編程基礎(chǔ)
- Yii框架深度剖析
- PHP編程(第4版)