天天看點

循環中的continue和break

break和continue關鍵字是我們在循環中經常用到的

一般break是指終止循環,使整個循環不再繼續

而continue是跳過本次循環,繼續下一輪的循環

那麼在雙重循環中又是怎樣的呢?

先來看 break關鍵字

public static void main(String[] args) {

        for (int i = ; i < ; i++) {

            for (int j = ; j < ; j++) {
                if(j==){//終止内層循環 ,繼續外層循環
                    break;
                }
                System.out.println("i="+i+";j="+j);
                /*
                        i=0;j=0
                        i=1;j=0
                        i=2;j=0
                        i=3;j=0
                */
            }
        }
    }
           

如果想要終止外層循環(整個循環)呢,可以給循環加個标簽(就像下面代碼塊中的outer和inner)

public static void main(String[] args) {

        outer:
        for (int i = ; i < ; i++) {
            inner:
            for (int j = ; j < ; j++) {
                if(j==){
                    break outer ;//終止整個循環
                    /*
                        i=0;j=0
                     */

                }   
            }
           

如果是外層循環中的變量滿足條件時使用break,continue 關鍵字

public static void main(String[] args) {

        outer:
        for (int i = ; i < ; i++) {
            inner:
            for (int j = ; j < ; j++) {
                if(i==){  //i==1時外層循環就不再繼續,循環終止
                    break outer;
                }


                System.out.println("i="+i+";j="+j);
                    /*
                        i=0;j=0
                        i=0;j=1
                        i=0;j=2
                        i=0;j=3
                        i=0;j=4
                  */
            }
        }

    }
           

如果沒有使用outer标簽的話,與使用continue關鍵字(無論是否加outer/inner标簽)的效果是一樣的

public static void main(String[] args) {

        outer:
        for (int i = 0; i < 5; i++) {
            inner:
            for (int j = 0; j < 5; j++) {
                if(i==1){  //跳過i==1時的循環,繼續下一外層循環
                    break ;
                }
                System.out.println("i="+i+";j="+j);

                    /*
                        i=0;j=0
                        i=0;j=1
                        i=0;j=2
                        i=0;j=3
                        i=0;j=4
                        i=2;j=0
                        i=2;j=1
                        i=2;j=2
                        i=2;j=3
                        i=2;j=4
                        i=3;j=0
                        i=3;j=1
                        i=3;j=2
                        ......
                  */
            }

    }

           

那麼對于continue關鍵字,對于針對外層循環變量的條件,與上述代碼塊的結果是一樣的,而對于針對内層循環變量的條件

public static void main(String[] args) {
        outer:
        for (int i = ; i < ; i++) {
            inner:
            for (int j = ; j < ; j++) {

                if(j==){//跳過了内層的這一循環,接着走内層的下一循環
                    continue ;//加不加innner都一樣

                }
                System.out.println("i="+i+";j="+j);
                    /*
                        i=0;j=0
                        i=0;j=2
                        i=0;j=3
                        i=1;j=0
                        i=1;j=2
                        i=1;j=3
                        i=2;j=0
                        i=2;j=2
                        i=2;j=3
                        i=3;j=0
                        i=3;j=2
                        i=3;j=3
                 */
            }
        }
    }