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.3.2 while循环 - 图1

图 4.6 循环语句流程图

4.3.2 while循环 - 图2

图 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.3.2 while循环 - 图3

图 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


按照先绘制流程图,后编写程序的步骤,会显得思路更清晰。其实从上面的程序段中,可以总结一点:当由多个条件形成循环条件时,可以选择其中一个作为循环条件,而剩下的条件可以在循环体中作条件语句。