3.4.4 while循环
Java提供while循环式,它根据您所指定的条件式来判断是否执行循环体。语法如下:
while(条件式) {
语句一;
语句二;
}
如果循环体只有一个语句,则while的{ }可以省略不写;while像是没有起始语句与终止语句的for循环,主要用于重复性的动作,而停止的时机是未知的。例如一个使用者输入接口,使用者可能输入10次,也可能输入20次,这时循环停止的时机是未知的,可以使用while循环来完成。
一个计算输入成绩平均的程序如范例3.31所示。
Ü 范例3.31 ScoreAverage.java
import java.util.Scanner;
public class ScoreAverage {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int score = 0;
int sum = 0;
int count = -1;
while(score != -1) {
count++;
sum += score;
System.out.print("输入分数(-1结束):");
score = scanner.nextInt();
}
System.out.println("平均:" + (double) sum/count);
}
}
在这个程序中,使用者的输入次数是未知的,所以使用while循环来判断使用者的输入是否为-1,以作为循环执行的条件。一个执行的例子如下:
输入分数(-1结束):99
输入分数(-1结束):88
输入分数(-1结束):77
输入分数(-1结束):-1
平均:88.0
while可以用作无穷循环,很多地方都用到无穷循环。例如游戏设计中对使用者输入设备的轮询(Poll),或是动画程序的播放都会使用到无穷循环。一个无穷循环如下所示:
while(true) {
循环内容;
...
}
无穷循环可以由自己循环中的某个条件式来结束。下面是一个循环内部终止的例子:
while(true) {
语句;
if(条件式)
break; // 跳离循环
...
}
当条件式成立时,会执行break离开while循环,这个break与switch中的作用是一样的,都是要离开当时执行的程序块时使用。
while循环有时称为“当型循环”,因为它在循环执行前就会进行条件判断,而另一个do while称为“直到型循环”,它会先执行循环体,然后再进行条件判断。do while的语法如下所示:
do {
语句一;
语句二;
...
} while(条件式);
注意while后面是以分号;作为结束,这个经常被忽略。由于do while会先执行循环,所以它通常用于进行一些初始化或接口沟通的动作,如范例3.32所示。
Ü 范例3.32 OddDecider4.java
import java.util.Scanner;
public class OddDecider4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int input = 0;
int replay = 0;
do {
System.out.print("输入整数值:");
input = scanner.nextInt();
System.out.println("输入数为奇数?" +
((input%2 == 1) ? 'Y': 'N'));
System.out.print("继续(1:继续 0:结束)?");
replay = scanner.nextInt();
} while(replay == 1);
}
}
执行结果:
输入整数值:77
输入数为奇数?Y
继续(1:继续 0:结束)?0






