5.4 循环语句

循环语句是在满足条件的情况下能够重复执行指定代码块的语句结构。Java中,主要包括for、while和do-while三种循环语句。下面分别讨论三者。

5.4.1 for语句

for语句的传统使用格式如下。

    for(<初始化循环控制变量> ; <执行条件>; <循环控制变量每次循环后的变化>) {
    <代码块>
    }

先看两个例子,下面的代码将计算1~100之间整数的累加和。

下面的代码会计算2~100中偶数的累加和。

请注意,在每次执行循环后,循环控制变量i的值会加2,这样就可以直接使用偶数了。

for语句的另外一种使用方式称为迭代循环,可以逐一访问数组或集合成员,如下面的代码所示。

代码执行结果如图5-3所示。

本例中使用了:符号,其含义可以理解为in(在...中)。在:符号的左边定义了访问数组或集合成员的变量,右边为数组或集合对象。代码的功能就是迭代访问数组中的所有成员。

第8章会详细讨论数组和集合的应用。

图5-3 使用for语句结构进行迭代访问

5.4.2 while语句

while语句结构的应用相对简单一些,其格式如下。

    while(<条件>)
    {
        <语句块>
    }

结构中,当<条件>满足(true值)时,执行<语句块>;否则,停止执行。

使用while语句结构时应注意,在<语句块>中应该有改变循环条件的代码,否则,循环就不会停止,形成无限循环,也称为死循环。

下面的代码使用while语句结构计算1~100之间整数的累加和。

5.4.3 do-while语句

do-while语句与while语句比较相似,只是将循环条件的判断放在每次循环之后,如下面的格式所示。

    do
    {
        <语句块>
    }while(<条件>);

下面的代码使用do-while语句计算1~100之间整数的累加和。

5.4.4 break语句与标签

在介绍switch语句结构时,已经介绍了break语句的使用,而在循环语句中,同样可以使用break语句。

循环语句结构中,break语句用于终止当前循环。下面的代码查找大于1000的第一个质数。

代码执行结果如图5-4所示。

开发中,如果使用多层嵌套循环,在满足条件时可能需要从内层循环直接跳出所有的循环结构。要实现这一功能,可以将break语句与标签配合使用。

首先,使用标签命名一个代码块,如多层循环结构。然后,在满足条件时使用“break <标签名>;”语句终止此代码块,这样就可以直接跳出多层循环结构。下面的代码演示了这一操作。

代码执行结果如图5-5所示。

图5-4 判断质数

图5-5 break语句与标签

代码中定义的TAG_FOR3就是一个标签,它用于标识三层for循环结构。在最里层,即k循环中,当i、j、k的和大于200而且是质数时,就使用“break TAG_FOR3;”语句直接跳出三层循环结构。

5.4.5 continue语句

循环语句中,continue语句的功能是中断本次循环,如果条件满足,则执行下一次循环。下面的代码使用continue语句计算2~100中质数的累加和。

在for循环语句中,如果i不是质数,则使用continue语句中止当前循环,如果是质数,则累加到sum变量中。代码执行结果如图5-6所示。

图5-6 使用continue语句