break和continue語句對循環中的代碼執行提供了更嚴格的控制。break語句可以立即退出循環,阻止再次反復執行任何代碼,而continue語句只是退出當前循環,根據控制表達式還允許繼續進行下一次循環。例如:
在上面的代碼中,for循環將從1到10迭代變量i。在循環主體中,if語句將(使用取模運算符)檢查i的值是否能被5整除。如果能被5整除,將執行break語句,警告顯示"4",即在退出循環前執行循環的次數。如果用continue語句代替這個例子中的break語句,結果將不同:
這里,警告將顯示"8",即執行循環的次數。可能執行的循環總數為9,不過當i的值為5時,將執行continue語句,會使循環跳過表達式iNum++,返回循環開頭。
break語句和continue語句都可以與有標簽的語句聯合使用,返回代碼中的特定位置。通常,當循環內部還有循環時,會這樣做,如下面的例子所示:
在這個例子中,標簽outermost表示的是第一個for語句。正常情況下,每個for語句執行10次代碼塊,意味著iNum++正常情況下將被執行100次,在執行完成時,iNum應該等于100。這里的break語句有一個參數,即停止循環后要跳轉到的語句的標簽。這樣break語句不止能跳出內部for語句(即使用變量j的語句),還能跳出外部for語句(即使用變量i的語句)。因此,iNum最后的值是55,因為當i和j的值都等于5時,循環將終止。可以以同樣的方式使用continue語句:
在這個例子中,continue語句會迫使循環繼續,不止是內部循環,外部循環也如此。當j等于5時出現這種情況,意味著內部循環將減少5次迭代,致使iNum的值為95。
可以看到,與break和continue聯合使用的有標簽語句的功能非常強大,不過過度使用它們會給調試代碼帶來麻煩。要確保使用的標簽具有說明性,不要嵌套太多層循環。