秦疆的Java课程笔记:43 流程控制 break、continue、goto

发布时间 2023-11-28 15:36:14作者: Acolyte_9527
  • break:在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break也在switch语句中使用)
public class BreakDemo {  
    public static void main(String[] args) {  
        int i = 0;  
        while(i<100){  
            i++;  
            System.out.println(i);  
            if (i==3){  
                break;  
            }  
        }  
        System.out.println("劳资蜀道山");  
    }  
}
====效果如下====
1
2
3
劳资蜀道山   //break只是终止循环,循环后的语句会继续执行。
  • continue:用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。
public class ContinueDemo {  
    public static void main(String[] args) {  
        int i = 0;  
        while (i<30){  
            i++;  
            if (i%10==0){  
                System.out.println();  
                continue;  
            }  
            System.out.print(i+"\t");  
        }  
    }  
}
====效果如下====
1	2	3	4	5	6	7	8	9	
11	12	13	14	15	16	17	18	19	
21	22	23	24	25	26	27	28	29
//跳过了每个10的倍数,但继续循环,直到终止。
  • 关于goto关键字:

    • goto关键字很早就在程序设计语言中出现。尽管goto仍是java的一个保留字,但并未在语言中得到正式使用;java没有goto。然而,在break和continue这两个关键字上,任然能看出一些goto的影子——带标签的break和continue。
    • 标签是指后面跟一个冒号:的标识符,比如:label:
    • 对Java来说,唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,若随同标签使用,它们就会中断到存在标签的地方。
  • 打印101-150之间所有的质数

public class LabelDemo {  
    public static void main(String[] args) {  
        //质数的定义是只能被自己和1整除的自然数  
        outer:for (int i =101;i<150;i++) {  
            for (int j = 2;j<i/2;j++){
            //j从2开始排除了1,<i/2是因为大于i一半的数不可能整除i  
                if (i%j==0){
                //模=0,说明这个数可以被1和自身外的自然数整除,不是质数  
                    continue outer;
                    //跳出循,打印一个质数,并转到outer:继续循环,直到终止  
                }  
            }  
            System.out.print(i+" ");  
        }  
    }  
}
====效果如下====
101 103 107 109 113 127 131 137 139 149 
  • 秦疆老师不建议使用这种语句。