在本教程中,您將在示例的幫助下了解Java中的continue語句和標記為continue的語句。
在處理循環(huán)時,有時需要跳過循環(huán)中的某些語句,或者在不檢查測試表達式的情況下立即終止循環(huán)。
在這種情況下,將使用break和continue語句。要了解該break語句,請訪問Java break。
Java中的continue語句跳過循環(huán)的當前迭代(for,while,do…while等),程序的控制權(quán)移到循環(huán)的末尾。并計算循環(huán)的測試表達式。
對于for循環(huán),update語句在測試表達式之前執(zhí)行。
continue語句幾乎總是在(if ... else語句)決策語句中使用。它的語法是:
continue;
class Test { public static void main(String[] args) { // for循環(huán) for (int i = 1; i <= 10; ++i) { //如果i的值在4和9之間,則執(zhí)行continue if (i > 4 && i < 9) { continue; } System.out.println(i); } } }
輸出:
1 2 3 4 9 10
在上面的程序中,我們使用for循環(huán)來打印每次迭代中i的值。要了解for循環(huán)的工作原理,請訪問Java for循環(huán)。在這里,請注意以下語句:
if (i > 5 && i < 9) { continue; }
這意味著當i的值大于4小于9時,將跳過循環(huán)中的print語句。因此,我們將跳過值5、6、7和8的輸出。
下面的程序計算用戶輸入的5個正數(shù)的總和。如果用戶輸入負數(shù)或零,則將其從計算中跳過。
為了接受用戶的輸入,我們使用了該Scanner對象。要了解更多信息Scanner,請訪問Java Scanner。
import java.util.Scanner; class AssignmentOperator { public static void main(String[] args) { Double number, sum = 0.0; //創(chuàng)建Scanner對象 Scanner input = new Scanner(System.in); for (int i = 1; i < 6; ++i) { System.out.print("輸入一個數(shù)字: "); //接受double類型的數(shù)據(jù)輸入 number = input.nextDouble(); //如果number為負數(shù),則跳過迭代 if (number <= 0.0) { continue; } sum += number; } System.out.println("Sum = " + sum); } }
輸出:
輸入一個數(shù)字: 2.2 輸入一個數(shù)字: 5.6 輸入一個數(shù)字: 0 輸入一個數(shù)字: -2.4 輸入一個數(shù)字: -3 Sum = 7.8
在上面的程序中,請注意以下行:
if (number < 0.0) { continue; }
這意味著當用戶輸入負數(shù)時,將跳過循環(huán)的當前迭代。下一個迭代就開始了。
如果是嵌套循環(huán),則continue將跳過最內(nèi)層循環(huán)的當前迭代。
到目前為止,我們使用了未標記的continue語句。它用于終止最內(nèi)層的循環(huán)和switch語句。然而,Java中還有另一種形式的continue語句,稱為標記contine。
如上圖所示,我們使用label標識符來指定外部循環(huán)。現(xiàn)在,請注意如何使用該continue語句(continue label;)。
在這里,continue語句將跳過標記語句的當前迭代(即外部循環(huán))。然后,程序的控制轉(zhuǎn)到標記語句的下一次迭代(外循環(huán))
class LabeledContinue { public static void main(String[] args) { //外部for循環(huán)標記為label first: for (int i = 1; i < 6; ++i) { for (int j = 1; j < 5; ++j) { if (i == 3 || j == 2) //跳過標簽的迭代(外部for循環(huán)) continue first; System.out.println("i = " + i + "; j = " + j); } } } }
輸出:
i = 1; j = 1 i = 2; j = 1 i = 4; j = 1 i = 5; j = 1
在上面的示例中,使用帶標簽的continue語句跳過標記為first的循環(huán)的當前迭代。
if (i==3 || j==2) continue first;
在這里,我們可以看到最外層的for循環(huán)被標記為first,
first: for (int i = 1; i < 6; ++i) {..}
因此,如果i的值為3或j的值為2,則跳過外部for循環(huán)的迭代。
注意:通常不建議使用帶標簽的continue,因為這會使代碼難以理解。如果您處于必須使用標記為continue的情況下,請重構(gòu)代碼并嘗試以不同的方式解決它,以使其更具可讀性。