break和continue语句

尽管在学习switch开关语句时我们就接触过了break语句,但是Java中的break和continue两个保留关键词主要是用于循环语句。

当程序在执行循环语句时,如果遇见break语句,它会终止不再继续执行;相反,如果遇见continue语句,它会不再继续执行当前的循环代码块。

接下来我们一起通过代码示例去更好地理解它们的用法。

// 声明两个变量方便在循环语句中使用
double rand;
int value;

while (true) {
    rand = Math.random();
    value = (int)(rand * 10 + 1);
    System.out.println(value);
    if (value >= 4 && value <= 6) {
        System.out.println("恭喜,中奖了");
        break;
    }
}

上面这段代码的主要功能是,当电脑在1到10这个范围内猜到一个大于等于4且小于等于6的数字后,在屏幕上打印“恭喜,中奖了”这样一句话,并退出while循环。在猜中数字之前,程序会一直循环。

这段代码中有几个地方值得大家了解的。首先是我们可以在循环语句外面声明变量,然后在循环代码块内部完成变量的初始化,比如这里我们在while语句前面声明了两个变量rand、value,接着在循环体里面进行初始化,仍然保证了在第一次使用变量之前变量是完成了初始化的。比如第七行代码使用了变量rand的值来计算变量value的值,但是在第六行代码保证了变量rand具有初始值。

第二个地方就是可以直接使用布尔类型字面值用作循环语句的循环条件部分,比如这里的true。像这样编写代码

while (true) {
    ...
}

程序就会一直执行循环代码块,直到执行一次break语句并终止继续执行。如果程序永远不可能执行到break语句,那么程序就会一直循环。在编程术语中,我们常常将这个状态叫做死循环。

第三个地方就是”Math.random()”方法,它的作用是产生一个大于等于0.0且小于1.0的浮点数。random()方法的用法与println()方法不一样,在使用时我们不需要传递给它任何数据。

第七行代码的作用就是将这个在0.0到1.0之间的随机浮点数映射到1到10这个整数范围,包括1和10。

如果大家运行这段代码,可能每次的结果都不太一样,比如我第一次运行的结果是这样的,

8
2
1
5
恭喜,中奖了

第二次运行结果又不一样,

10
8
5
恭喜,中奖了

以上就是break语句的用法,接下来继续看看continue语句。

如果我们想要电脑打印出来0到9之间的所有偶数,可以这样编写代码,

for (int i = 0; i < 10; i++) {
    if (i % 2 == 1) {
        continue;
    }
    System.out.println(i);
}

当程序在执行上面这段代码里面的for语句时,每次进入循环体,会先判断变量i的当前值能否被2整除。

如果能被2整除(是偶数),则if语句的判断条件不成立,程序就使用println()方法打印变量i的值,然后来到for语句的表达式部分,接着准备开启下一次循环;如果不能被2整除(是奇数),那么if语句的判断条件成立,程序会执行if代码块里面的continue语句,并跳过其后的所有代码,直接来到for语句的表达式部分,继续准备开启下一次循环。

如果大家运行这段代码,我们的屏幕上会打印

0
2
4
6
8

这里有一点需要说明,程序在执行完continue语句后,会立马跳过其后的所有代码,包括与continue语句位于同一个代码块里面,但是在continue后面的所有代码。

for (int i = 0; i < 10; i++) {
    if (i % 2 == 1) {
        continue;
        System.out.print("奇数:");
        System.out.println(i);
    }
    System.out.println(i);
}

像上面这样编写代码是不合法的,而且在逻辑上也不正确。因为程序永远不可能执行这两行语句,

System.out.print("奇数:");
System.out.println(i);

相信大家已经注意到,在示例代码里面我使用小写字母i作为循环变量的名字。严格意义上从Java编程的命名规范来讲,这是不规范的做法,但是当编写循环语句的代码时,可以使用小写字母i、j、k作为循环变量的名字,这是几个特例。

以上就是关于break语句和continue语句的用法,下面仍然贴上本节教程的完整代码。

public class BreakAndContinueDemo {
    public static void main(String[] args) {

        // 1.break语句

        // 声明两个变量方便在循环语句中使用
        double rand;
        int value;

        while (true) {
            rand = Math.random();
            value = (int)(rand * 10 + 1);
            System.out.println(value);
            if (value >= 4 && value <= 6) {
                System.out.println("恭喜,中奖了");
                break;
            }
        }

        // 2.continue语句

        for (int i = 0; i < 10; i++) {
            if (i % 2 == 1) {
                continue;
                // System.out.print("奇数:");
                // System.out.println(i);
            }
            System.out.println(i);
        }
    }
}

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注