Java中的break和contiune

跳转语句


 

直接上代码:

    /**
     * 跳转指令
     */
    public static void GoTo(){
        for (int j = 0; j < 10 ; j++) {        //1
            for (int i = 0; i<10;i++){         //2
                if (i>5) {
                    System.out.println(j+" "+ i);
                    continue;
                }
                System.out.println("contine没有跳出"); //3
            }
        }
    }
  • continue:表示跳出本次循环,即所在层循环中,continue之后的代码(3)不再执行。继续执行2 层的下一次循环
  • 但是,该语句可以通过 “参数”指定跳转位置,改变跳转的方向。如下:
    /**
     * 跳转指令
     */
    public static void GoTo(){
        outer:for (int j = 0; j < 10 ; j++) {  //1
            for (int i = 0; i<10;i++){         //2
                if (i>5) {
                    System.out.println(j+" "+ i);
                    continue outer;
                }
            }
        }
    }
    public static void GoTo(){
        for (int j = 0; j < 10 ; j++) {    //1
            for (int i = 0; i<10;i++){     //2
                if (i>5) {
                    System.out.println(j+" "+ i);
                    break;
                }
            }
        }
    }
  • 以上代码通过 指定了continue的跳转位置,所以在此处相当于break
  • break 是跳出所在层循环,即第2层 ,继续执行第 1层的下一次循环。

 

  • 通过该方法可以跳出多重循环:
/**
 * 跳转指令
 */
public static void GoTo(){

    outer:for (int j = 0; j < 10 ; j++) {
        for (int i = 0; i < 10; i++) {
            for (int px = 1; px < 10; px++) {
                if (i > 5) {
                    System.out.println(j + " " + i);
                    continue outer;
                }
            }
        }
    }
}

直接跳到最外层循环。

continue 与break的巧妙应用

/**
 * 计算1000 以内10个最大质数和
 */
public static void Sum(){
    int sum =0,i = 0;
    outer:for(int j = 1000;j>2;j--){
        for(int x = 2;x<j/2;x++){
            if(j%x == 0){
                continue outer;
            }
        }

        i++;
        sum += j;

        if(i<10){
            //1 - 9 9个数
            System.out.print(j + "+");
        }else{
            //第 10 个数
            System.out.println(j +"="+sum);
            break;
        }
    }
}

分析:1. 当 j 不是质数时,会执行到continue -> outer:,跳出判断质数的循环,回到最外层继续继续寻找下一个质数。

           2. 如果换成break之后,发生错误。前后对比:

  
 
切换成break后,break(第一个)跳出内层for循环,继续执行 i++... ,相当于内层for循环没起作用。

第二个break是,在找到 10 个质数后,跳出最外层循环,不再寻找下一个质数。
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章