Java关键字break和continue如何使用

寻技术 JAVA编程 2023年07月11日 96

这篇文章主要介绍“Java关键字break和continue如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java关键字break和continue如何使用”文章能帮助大家解决问题。

break和continue的说明

break 循环结构,一旦执行,就结束(或跳出)当前循环结构,此关键字的后面,不能声明语句
continue 循环结构,一旦执行,就结束(或跳出)当次循环结构,此关键字的后面,不能声明语句

此外,很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条语句上,然后执行它,但使程序容易出错。Java中的break和continue是不同于goto的。

break语句用于终止某个语句块的执行

{    ……     
    break;
     ……
}

break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块

label1: {   ……        
    label2:         {   ……
    label3:             {   ……
                           break label2;
                           ……
                     }
                 }
            }
  • continue语句出现在多层嵌套的循环语句体中时,也可以通过标签指明要跳过的是哪一层循环。

  • 标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。

练习、找出100以内所有的素数(质数)?100000以内的呢?

目的:不同的代码的实现方式,可以效率差别很大。

分析:素数(质数):只能被1和它本身整除的自然数。 ---> 从2开始,到这个数-1为止,此范围内没有这个数的约数。则此数是一个质数。 比如:2、3、5、7、11、13、17、19、23、...

方案1

static void printSushu() {
        long start = System.currentTimeMillis();//开始时间
        int cnt = 0;//个数
        for (int i = 2; i <= 100000; i++) {
            boolean isFlag = true;//是否除尽
            for (int j = 2; j <= i - 1; j++) {
                if (i % j == 0) {
                    isFlag = false;
                }
            }
            if (isFlag) {
                cnt++;
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("质数的个数为:" + cnt);
        System.out.println("执行此程序花费的毫秒数为:" + (end - start));
       /* 质数的个数为:9592
        执行此程序花费的毫秒数为:18203*/
    }

方案2

static void printSushu1() {
        long start = System.currentTimeMillis();//开始时间
        int cnt = 0;//个数
        for (int i = 2; i <= 100000; i++) {
            boolean isFlag = true;//是否除尽
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    isFlag = false;
                    break;
                }
            }
            if (isFlag) {
                cnt++;
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("质数的个数为:" + cnt);
        System.out.println("执行此程序花费的毫秒数为:" + (end - start));
     /*   质数的个数为:9592
        执行此程序花费的毫秒数为:24*/
    }

方案3、

static void printSushu2() {
        long start = System.currentTimeMillis(); //记录当前时间距离1970-1-1 00:00:00的毫秒数

        int count = 0;//记录质数的个数

        label:
        for (int i = 2; i <= 100000; i++) {  //i
            for (int j = 2; j <= Math.sqrt(i); j++) { //优化2:将循环条件中的i改为Math.sqrt(i)
                if (i % j == 0) { //表明i有约数
                    continue label;
                }
            }
            //一旦程序能执行到此位置,说明i就是一个质数
            // System.out.println(i);
            count++;
        }

        long end = System.currentTimeMillis();
        System.out.println("质数的个数为:" + count);
        System.out.println("执行此程序花费的毫秒数为:" + (end - start));//1062

    }

练习2、生成 1-100 之间的随机数,直到生成了 97 这个数,看看一共用了几次?提示:使用 (int)(Math.random() * 100) + 1

static void printNum() {
        int count = 0;//记录循环的次数(或生成随机数进行比较的次数)
        while (true) {
            int random = (int) (Math.random() * 100) + 1;
            count++;
            if (random == 97) {
                break;
            }
        }
        System.out.println("直到生成随机数97,一共比较了 " + count + " 次!!");
    }
关闭

用微信“扫一扫”