C語言中文網 目錄

Java break語句詳解

< 上一頁Java return語句 Java continue語句下一頁 >

Java 中,break 語句有 3 種作用,分別是:在 switch 語句中終止一個語句序列、使用 break 語句直接強行退出循環和使用 break 語句實現 goto 的功能。

在 switch 語句中終止一個語句序列

在 switch 語句中終止一個語句序列,就是在每個 case 子句塊的最后添加語句“break;”,

使用 break 語句直接強行退出循環

可以使用 break 語句強行退出循環,忽略循環體中的任何其他語句和循環的條件判斷。在循環中遇到 break 語句時,循環被終止,在循環后面的語句重新開始。

例 1

小明參加了一個 1000 米的長跑比賽,在 100 米的跑道上,他循環地跑著,每跑一圈,剩余路程就會減少 100 米,要跑的圈數就是循環的次數。但是,在每跑完一圈時,教練會問他是否要堅持下去,如果回答 y,則繼續跑,否則表示放棄。

使用 break 語句直接強行退出循環的示例如下:
import java.util.Scanner;
public class Test24
{
    public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);    //定義變量存儲小明的回答
        String answer="";    //一圈100米,1000米為10圈,即為循環的次數
        for(int i=0;i<10;i++)
        {
            System.out.println("跑的是第"+(i+1)+"圈");
            System.out.println("還能堅持嗎?");    //獲取小明的回答
            answer=input.next();    //判斷小明的回答是否為y?如果不是,則放棄,跳出循環
            if(!answer.equals("y"))
            {
                System.out.println("放棄");
                break;
            }
            // 循環之后的代碼
            System.out.println("加油!繼續!");
        }
    }
}

該程序運行后的效果如下所示:
跑的是第1圈
還能堅持嗎?
y
加油!繼續!
跑的是第2圈
還能堅持嗎?
y
加油!繼續!
跑的是第3圈
還能堅持嗎?
n
放棄
盡管 for 循環被設計為從 0 執行到 10,但是當小明的回答不是 y 時,break 語句終止了程序的循環,繼續執行循環體外的代碼,輸出“加油!繼續!”。

break 語句能用于任何 Java循環中,包括人們有意設置的無限循環。在一系列嵌套循環中使用 break 語句時,它將僅僅終止最里面的循環。例如:
public class BreakDemo1
{
     public static void main(String[] args)
     {
        //外循環,循環5次
        for (int i=0;i<5;i++)
        {
            System.out.print("第"+(i+1)+"次循環:");

            //內循環,設計為循環10次
            for(int j=0;j<10;j++)
            {
                //判斷j是否等于3,如果是,則終止循環
                if(j==3)
                {
                    break;
                }
                System.out.print("內循環的第"+(j+1)+"次循環\t");
            }
            System.out.println();
        }
    }
}

該程序運行結果如下所示:
第1次循環:內循環的第1次循環 內循環的第2次循環 內循環的第3次循環
第2次循環:內循環的第1次循環 內循環的第2次循環 內循環的第3次循環
第3次循環:內循環的第1次循環 內循環的第2次循環 內循環的第3次循環
第4次循環:內循環的第1次循環 內循環的第2次循環 內循環的第3次循環
第5次循環:內循環的第1次循環 內循環的第2次循環 內循環的第3次循環

從程序運行結果來看,在內部循環中的 break 語句僅僅終止了所在的內部循環,外部循環沒有受到任何的影響。

注意:一個循環中可以有一個以上的 break 語句,但是過多的 break 語句會破壞代碼結構。switch 循環語句中的 break 僅影響 switch 語句,不會影響循環。

例 2

編寫一個 Java 程序,允許用戶輸入 6 門課程成績,如果錄入的成績為負則跳出循環;如果錄入 6 門合法成績,則計算已有成績之和。

使用 break 語句的實現代碼如下:
public class Test25
{
    public static void main(String[] args)
    {
        int score; //每門課的成績
        int sum=0; //成績之和
        boolean con=true; //記錄錄入的成績是否合法
        Scanner input=new Scanner(System.in);
        System.out.println("請輸入學生的姓名:");
        String name=input.next(); //獲取用戶輸入的姓名
        for(int i=1;i<=6;i++)
        {
            System.out.println("請輸入第"+i+"門課程的成績:");
            score=input.nextInt();//獲取用戶輸入的成績
            if(score<0)
            { //判斷用戶輸入的成績是否為負數,如果為負數,終止循環
                con=false;
                break;
            }
            sum=sum+score; //累加求和
        }
        if(con)
        {
            System.out.println(name+"的總成績為:"+sum);
        }
        else
        {
            System.out.println("抱歉,分數錄入錯誤,請重新錄入!");
        }
    }
}

運行程序,當用戶錄入的分數低于 0 時,則輸出“抱歉,分數錄入錯誤,請重新錄入!”信息,否則打印學生的總成績。輸出結果如下所示。
請輸入學生的姓名:
zhangpu
請輸入第1門課程的成績:
100
請輸入第2門課程的成績:
75
請輸入第3門課程的成績:
-8
抱歉,分數錄入錯誤,請重新錄入!
請輸入學生的姓名:
zhangpu
請輸入第1門課程的成績:
100
請輸入第2門課程的成績:
68
請輸入第3門課程的成績:
73
請輸入第4門課程的成績:
47
請輸入第5門課程的成績:
99
請輸入第6門課程的成績:
84
zhangpu的總成績為:471

在該程序中,當錄入第 3 門課的成績時,錄入的成績為負數,判斷條件“score<0”為 true,執行“con=false”,用 con 來標記錄入是否有誤。接著執行 break 語句,執行完之后程序并沒有繼續執行條件語句后面的語句,而是直接退出 for 循環。之后執行下面的條件判斷語句,判斷 boolean 變量的 con 是否為 true,如果為 true,則打印總成績;否則打印“抱歉,分數錄入錯誤,請重新錄入!”。

使用 break 語句實現 goto 的功能

break 語句可以實現 goto 的功能,并且 Java 定義了 break 語句的一種擴展形式來處理退出嵌套很深的循環這個問題。

通過使用擴展的 break 語句,可以終止執行一個或者幾個任意代碼塊,這些代碼塊不必是一個循環或一個 switch 語句的一部分。同時這種擴展的 break 語句帶有標簽,可以明確指定從何處重新開始執行。

break 除了具有 goto 退出深層循環嵌套作用外,還保留了一些程序結構化的特性。

標簽 break 語句的通用格式如下:
break label;

label 是標識代碼塊的標簽。當執行這種形式的 break 語句時,控制權被傳遞出指定的代碼塊。被加標簽的代碼塊必須包圍 break 語句,但是它不需要直接包圍 break 的塊。也就是說,可以使用一個加標簽的 break 語句來退出一系列的嵌套快,但是不能使用 break 語句將控制權傳遞到不包含 break 語句的代碼塊。

用標簽(label)可以指定一個代碼塊,標簽可以是任何合法有效的 Java 標識符,后跟一個冒號。加上標簽的代碼塊可以作為 break 語句的對象,使程序在加標簽的塊的結尾繼續執行。

下面是使用帶標簽的break 語句的示例。
public class GotoDemo
{
    public static void main(String[] args)
    {
        label:for(int i=0;i<10;i++)
        {
            for(int j=0;j<8;j++)
            {
                System.out.println(j);
                if(j%2!=0)
                {
                    break label;
                }
            }
        }
    }
}

以上程序的執行結果為:
0
1

這里的 label 是標簽的名稱,可以為 Java 語言中任意合法的標識符。標簽語句必須和循環匹配使用,使用時書寫在對應的循環語句的上面,標簽語句以冒號結束。如果需要中斷標簽語句對應的循環,可以采用 break 后面跟標簽名的方式。

如在上面代碼中,當 j 為 1 時,“j%2!=0”條件表達式成立,則 label 標簽所代表的最外層循環終止。
< 上一頁Java return語句 Java continue語句下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo