3.3 循环结构语句
在程序设计过程中,当在满足一定条件的前提下需要反复执行一些相同的操作时,使用循环结构语句便是最好的选择了。Java语言提供的循环结构语句包括for语句、while语句和do while语句。作为一个循环结构来说,应该包含如下内容:赋初值部分:用于设置循环控制的一些初始条件。
循环体部分:需要反复执行的代码(块),当然也可以是一句单一的语句。循环控制变量增减方式部分:用于更改循环控制状况。
判断条件(也称循环终止条件)部分:是一个返回逻辑(布尔)值的表达式,用于判断是否满足循环终止条件,以便及时结束循环。

3.3.1 for循环语句
for循环语句的使用适应于明确知道重复执行次数的情况,其语句格式如下: 
for(赋初值;判断条件;循环控制变量增减方式) {
(循环体)语句块;
} 
for循环的执行流程如图3ˉ6所示。 

 
图3ˉ6 for循环语句流程图 

1)第一次进入for循环时,对循环控制变量赋初值。
2)根据判断条件的内容检查是否要继续执行循环,如果判断条件为真,继续执行循环,如条件为假,则结束循环执行下面的语句。
3)执行完循环体内的语句后,系统会根据循环控制变量增减方式,更改循环控制变量的值,再回到步骤2重新判断是否继续执行循环。
例3.3.1 利用for循环语句计算从1累加到100的结果。
程序如下:


for循环语句格式中的三项内容(赋初值;判断条件;循环控制变量增减方式)可以视不同情况省却一个、两个,甚至全缺。例如在上面的例题(例3.1.1)中,将程序改成: 

将得到与例3.3.1完全相同的输出结果。
例3.3.2 利用for循环输出斐波那契序列的前30项数据。且每十个数据输出一行。
说明:斐波那契序列的第一、第二项都是1,后续各项是各项的前两项之和。
其运算公式为:

3.3.2 while循环结构语句
在不知道一个循环体会被重复执行多少次的情况下,可以选择使用while循环结构语句,while语句的语法格式如下:   
whi le(判断条件){
(循环体)语句块;
循环控制变量增(减)值;
}  
while循环的执行流程如下:
1)在进入while循环前,对循环控制变量赋初值。
2)根据判断条件检查是否要继续执行循环,如果判断条件为真,继续执行循环,若条件为假,则结束循环执行下面的语句。
3)执行完循环体后,系统会根据循环控制变量增减方式,更改循环控制变量的值,再回到步骤2重新判断是否继续执行循环。
while循环的执行流程如图3ˉ7所示。

 
图3ˉ7 while循环语句流程图


例3.3.3 编程序计算当n为多大时下列不等式成立。

3.3.3 do while循环结构语句
do while循环语句功能与while语句类似,但do while语句的循环终止判断是在循环体之后执行,也就是说,它总是先执行一次循环体,然后判断条件表达式的值是否为真,若为真,则继续执行循环体;否则循环到此结束。与do while语句所不同的是,while语句如果开始时判别表达式为假,则可能一次都不执行循环体而直接结束循环。 图3ˉ8 do while循环语句流程图 do while循环的语法格式如下: 
do{ 
(循环体)语句块;
循环控制变量增(减)值;

whi le(判断条件)
do while循环的执行流程如图3ˉ8所示。

例3.3.4 编程序计算1到1000000之间10的方幂的平方根(即计算10 0 、10 1 、10 2 ……的平方根)。
程序如下:
 
 
本程序中使用的pow(double a,double b)方法,返回第一个参数(a)的第二个参数(b)次幂的值,即a  b 的值。该方法被封装于java.lang中的Math类中。

3.3.4 循环结构语句的嵌套
当循环语句的循环体中又出现循环语句时,就称为循环嵌套。Java语言支持循环嵌套,如for循环嵌套、while循环嵌套,当然也可以使用混合嵌套。在for循环嵌套的程序设计中,输出九九乘法表是典型的示例。
例3.3.5 输出九九乘法表。
程序如下:
 
在程序设计过程中,选择结构语句与循环结构语句互相嵌套使用也是相当常见的。例3.3.6 输出1到100之间的所有偶数,并控制每行输出五个偶数。
程序如下:


例3.3.7 编一程序,从键盘输入一个自然数,判别其是否为素数(只能被1和其本身整除的自然数称为素数)。
程序如下: