在本教程中,您將借助示例來學(xué)習(xí)break語句,該語句在Java中被標(biāo)記為break語句。
在使用循環(huán)時(shí),有時(shí)希望跳過循環(huán)內(nèi)的某些語句或立即終止循環(huán)而不檢查測(cè)試表達(dá)式。
在這種情況下,將使用break和continue語句。您將在下一章中了解continue語句。
Java中的break語句立即終止循環(huán),程序的控制權(quán)移至循環(huán)后的下一條語句。
break語句它幾乎總是與決策語句(Java if ... else語句)一起使用。
這是Java中break語句的語法:
break;
class Test { public static void main(String[] args) { // for 循環(huán) for (int i = 1; i <= 10; ++i) { //如果i的值為5,則循環(huán)終止 if (i == 5) { break; } System.out.println(i); } } }
輸出:
1 2 3 4
在上面的程序中,我們使用for循環(huán)來打印每次迭代中i的值。要了解for循環(huán)的工作原理,請(qǐng)?jiān)L問Java for 循環(huán)。在這里,請(qǐng)注意以下語句:
if (i == 5) { break; }
這意味著當(dāng)?shù)闹礽等于5時(shí),循環(huán)終止。因此,我們得到是小于5的輸出值。
下面的程序計(jì)算用戶輸入的數(shù)字總和,直到用戶輸入負(fù)數(shù)。
為了接受用戶的輸入,我們使用了該Scanner對(duì)象。要了解更多信息Scanner,請(qǐng)?jiān)L問Java Scanner。
import java.util.Scanner; class UserInputSum { public static void main(String[] args) { Double number, sum = 0.0; //創(chuàng)建Scanner對(duì)象 Scanner input = new Scanner(System.in); while (true) { System.out.print("輸入一個(gè)數(shù)字: "); //接受用戶的兩次輸入 number = input.nextDouble(); //如果number為負(fù)數(shù),循環(huán)終止 if (number < 0.0) { break; } sum += number; } System.out.println("Sum = " + sum); } }
輸出:
輸入一個(gè)數(shù)字: 3.2 輸入一個(gè)數(shù)字: 5 輸入一個(gè)數(shù)字: 2.3 輸入一個(gè)數(shù)字: 0 輸入一個(gè)數(shù)字: -4.5 Sum = 10.5
在上述程序中,while循環(huán)的測(cè)試表達(dá)式始終為true。在這里,請(qǐng)注意這行,
if (number < 0.0) { break; }
這意味著當(dāng)用戶輸入負(fù)數(shù)時(shí),while循環(huán)終止。
對(duì)于嵌套循環(huán),break語句終止最里面的循環(huán)。
在這里,break語句終止最內(nèi)層的while循環(huán),并且控制跳至外層循環(huán)。
到目前為止,我們已經(jīng)使用了未標(biāo)記的break語句。它終止最里面的循環(huán)和switch語句。但是,Java中還有另一種break語句形式,稱為帶標(biāo)簽的break。
我們也可以使用標(biāo)記的break語句終止最外面的循環(huán)。
如上圖所示,我們使用label標(biāo)識(shí)符來指定外部循環(huán)?,F(xiàn)在,請(qǐng)注意如何使用該break語句(break label;)。
在這里,該break語句終止了帶標(biāo)簽的語句(即外循環(huán))。然后,程序跳到指定的標(biāo)記語句之后的語句。
這是另一個(gè)實(shí)例:
while (testExpression) { // 代碼 second: while (testExpression) { // 代碼 while(testExpression) { // 代碼 break second; } } //控制跳到這里 }
在上面的示例中,當(dāng)執(zhí)行語句 break second;時(shí); 執(zhí)行完后,標(biāo)記為Second的while循環(huán)終止。 并且,程序的控制權(quán)在第二個(gè)while循環(huán)之后移至該語句。
class LabeledBreak { public static void main(String[] args) { //for循環(huán)標(biāo)記為first first: for( int i = 1; i < 5; i++) { //for循環(huán)標(biāo)記為second second: for(int j = 1; j < 3; j ++ ) { System.out.println("i = " + i + "; j = " +j); //break語句終止第一個(gè)for循環(huán) if ( i == 2) break first; } } } }
輸出:
i = 1; j = 1 i = 1; j = 2 i = 2; j = 1
在上面的示例中,labeled break語句用于終止標(biāo)記為first的循環(huán)。那是,
first: for(int i = 1; i < 5; i++) {...}
在這里,如果我們更改break first;為 break second;程序的行為將不同。在這種情況下,標(biāo)記為second的for循環(huán)將被終止。例如,
class LabeledBreak { public static void main(String[] args) { //for循環(huán)標(biāo)記為first first: for( int i = 1; i < 5; i++) { //for循環(huán)標(biāo)記為second second: for(int j = 1; j < 3; j ++ ) { System.out.println("i = " + i + "; j = " +j); //break語句終止標(biāo)記為second的循環(huán) if ( i == 2) break second; } } } }
輸出:
i = 1; j = 1 i = 1; j = 2 i = 2; j = 1 i = 3; j = 1 i = 3; j = 2 i = 4; j = 1 i = 4; j = 2
注意:break語句還用于終止switch語句中的case。要了解更多信息,請(qǐng)?jiān)L問Java switch語句。