天天看点

循环中的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
                 */
            }
        }
    }