4.3.2 while循环
在英文中“while”这个词的意思是“当”,而在Java程序设计中,也可以将其理解为“当”。其语法结构是:
01 while(条件)
02 {
03 目的一;
04 目的二;
05 ……
06 }
当满足某种条件,就执行“目的一”、“目的二”等,while语句的循环体在{}中。
【实例4.11】下面看一段程序段,通过分析它,让读者更加清楚循环语句。
01 ///通过判断y是否大于0
02 ///如果y大于0则将计费次数减1,x加1
03 public class control8
04 {
05 public static void main(String[]args)
06 {
07 int x=0;
08 int y=100;
09 int sum=0;
10 while(y>0)
11 {
12 x=x+1;
13 y—;
14 sum+=x;
15 }
16 System.out.println(sum);
17 }
18 }
【代码说明】这个程序段是将数字从1一直加到100,条件是只要“y”大于0,就会执行大括号里的语句。“y”初始值是100,满足条件,所以执行大括号的表达式。先将“x+1”赋给“x”,因为x的初始值是0,所以x从1开始计数,然后,将“y”自减1,此时“y”变成了99,将“sum”加上“x”赋给“sum”。此时,执行语句结束了,又会回到小括号的条件,最后再比较“y=99”是否大于0,如果大于0,再继续执行大括号里的语句。
一旦“y”自减到小于0,则将结束执行大括号里的语句,开始执行大括号外的语句。在上面的程序段中,y就相当于一个计数器。
【运行效果】
5050
同样,在编写while语句时,要先绘制流程图,根据流程图再来编写程序段,整个思路就会很清晰了。下面先看while的流程图,如图4.6所示。
其实while语句很简单,根据这个流程图,就可以思路很清晰地编写程序段。下面针对上面的程序段来绘制流程图,如图4.7所示。
图 4.6 循环语句流程图
图 4.7 一个循环语句实例的流程图
看了这个流程图,会发现按照流程图来编写程序简单多了。为了巩固以上所说,再看一个例子。
【实例4.12】试编写程序实现输出1~100间的整数,并且此整数必须满足:它是3的倍数,但不是5的倍数,也不是9的倍数。针对这个例子,先来绘制一个流程图,如图4.8所示。
根据流程图,现在来编写程序段。
01 ///通过判断是否在100以内,并且是3的倍数
02 ///然后再判断这些数是否不是5的倍数
03 ///最后判断这些数是否不是9的倍数
04 public class control9
05 {
06 public static void main(String[]args)
07 {
08 int x=1;
09 while(((3x>1)&&(3x<100)))
10 {
11 if((3*x)%5!=0)
12 {
13 if((3*x)%9!=0)
14 {
15 System.out.println(3*x);
16 }
17 }
18 x++;
19 }
20 }
21 }
图 4.8 输出特殊数字的循环流程图
【代码说明】第9行是一个循环判断条件,判断是否在100以内,并且是3的倍数。第11行是一个条件语句,判断这些数是否不是5的倍数,第13行也是一个条件语句,判断这些数是否不是9的倍数。
【运行效果】
3 6
12 21
24 33
39 42
48 51
57 66
69 78
84 87
93 96
按照先绘制流程图,后编写程序的步骤,会显得思路更清晰。其实从上面的程序段中,可以总结一点:当由多个条件形成循环条件时,可以选择其中一个作为循环条件,而剩下的条件可以在循环体中作条件语句。