官术网_书友最值得收藏!

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)。

主站蜘蛛池模板: 六枝特区| 邢台市| 北京市| 墨玉县| 新建县| 东明县| 嘉荫县| 郸城县| 洞口县| 新竹市| 安国市| 庐江县| 龙南县| 乌鲁木齐县| 西充县| 桂东县| 顺昌县| 九龙城区| 博乐市| 舟曲县| 瑞丽市| 安乡县| 仙游县| 兰考县| 威远县| 海城市| 本溪市| 岳西县| 浦东新区| 卢氏县| 集安市| 房产| 永登县| 宁津县| 山西省| 中西区| 襄汾县| 蒲江县| 布尔津县| 呼玛县| 黄石市|