while循环结构的一般语法是:
while( 条件判断表达式 )
语句;
其中,表达式是循环条件,语句为循环体。while语句的语义是:计算条件判断表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,则不执行循环体语句直接退出循环。
循环体语句可以是空语句(空语句就是没有执行任何操作的语句,空语句单独占一行,语句内容只有“;”符号)、单条语句或多条语句。如果是多条语句,则要用“{”和“}”把它们括起来。条件可以是任何表达式。
案例1:实现输出从1—10分别乘以10所得的乘法表。
在PbaseUnit10项目unit包下创建LoopSample1类。代码如下:
/**
* @Title: LoopSample1.java
* @Package unit
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date
* @version V1.0
*/
package unit;
/**
* @ClassName: LoopSample1
* @Description: 流程控制(while循环结构)案例1
* @author 编程训练营
* @date
*
*/
public class LoopSample1 {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
*
* @return void 返回类型 @throws
*/
public static void main(String[] args) {
// num初始化为1
int num = 1;
int result;
while (num <= 10) {
result = num * 10;
System.out.printf(" %d * 10 = %d \n", num, result);
// 使用自增运算符,修改循环变量
num++;
}
}
}程序结构分析
程序功能主要是演示while循环语句的使用。
程序声明了两个int类型的变量num和result,分别用来存储数字和乘积。然后,将num初始化为1,因为打算在while循环中从1开始执行乘法运算,求出1—10的数字与10的乘积,因此将while循环的条件编写为num<=10。这样确保了只要num小于等于10,就执行while循环;而当此条件变为假时,即num的值达到11时,就结束循环。循环体中的第一个语句用num乘以10,将计算结果保存在变量result中。第二个语句输出乘法表,循环体中的最后一个语句将num的值递增1,来修改num的值。此处使用了单目自增运算符++,也可以编写为num=num+1,来替代num++。
程序中的num++非常重要,这条语句通过修改num的值来修改循环条件,直到num的值等于11,循环条件为假时退出循环。也就是说,循环条件中的变量,需要在循环中重新赋值,以逐渐改变循环条件的值,直到循环条件为假;否则循环将永远不会停止,这种循环称为“死循环”或者“无限循环”。
程序执行结果如下图所示:

案例2:无限循环。
在PbaseUnit10项目unit包下创建LoopSample2类。代码如下:
/**
* @Title: LoopSample2.java
* @Package unit
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date
* @version V1.0
*/
package unit;
/**
* @ClassName: LoopSample2
* @Description: 流程控制(while循环结构)案例2
* @author 编程训练营
* @date
*
*/
public class LoopSample2 {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
*
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
int count = 0;
while (count < 100) {
System.out.println("这将没完没了,帮帮我吧!!!");
System.out.printf("试试Ctrl+F2吧");
}
}
}程序结构分析
程序功能主要是演示在while循环语句中,由于缺乏改变条件的语句而导致出现无限循环的问题。
程序中while循环体内没有修改循环变量count的值,导致循环条件一直为真,造成了无限循环。
程序执行结果如下图所示:

另外,假如编写了以下while循环语句:
while( 1 )
其中,条件仅仅是一个数值常量1,由于在Java语言中,规定所有的非0值都表示真。因此,它实际上相当于while(true),而且这个循环条件没有办法在循环体内修改,这样会导致无限循环。可以使用break语句强行跳出循环,这个语句将在后面介绍。
如果循环条件中包含多个条件表达式的组合,这时需要检查整个条件表达式的值。如果整个条件表达式的值为假,即使其中某个子条件表达式为真,循环也会结束。
案例3:编写一个程序,要求从摄氏度0度到250度,每隔20度为一项,输出一个摄氏温度与华氏温度的对照表,同时要求对照表中的条目不超过10条。
在PbaseUnit10项目unit包下创建LoopSample3类。代码如下:
/**
* @Title: LoopSample3.java
* @Package unit
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date
* @version V1.0
*/
package unit;
/**
* @ClassName: LoopSample3
* @Description: 流程控制(while循环结构)案例3
* @author 编程训练营
* @date
*
*/
public class LoopSample3 {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
*
* @return void 返回类型 @throws
*/
public static void main(String[] args) {
int count = 0;
int c = 0;
double f;
// 输出控制在10条以内
while (c <= 250 && count < 10) {
count++;
System.out.printf("%d: ", count);
//计算华氏温度
f = c * 9 / 5.0 + 32.0;
System.out.printf("c = %d, F = %7.2f\n", c, f);
c = c + 20;
}
}
}程序结构分析
程序功能主要是演示while循环语句的使用。
程序中的循环将执行10次,虽然温度只显示到180,但是由于对照表中条目已经满10条,即count<10变为假,从而导致循环结束。
程序执行结果如下图所示:

案例4:编写一个程序,用于从控制台接收字符串输入,并将结果输出到屏幕上,当用户输入“quit”时,程序结束。
在PbaseUnit10项目unit包下创建LoopSample4类。代码如下:
/**
* @Title: LoopSample4.java
* @Package unit
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date
* @version V1.0
*/
package unit;
import java.util.Scanner;
/**
* @ClassName: LoopSample4
* @Description: 流程控制(while循环结构)案例4
* @author 编程训练营
* @date
*
*/
public class LoopSample4 {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
*
* @return void 返回类型 @throws
*/
public static void main(String[] args) {
String str = "";
Scanner sc = new Scanner(System.in);
// 用户输入quit,循环结束
while (!str.equals("quit")) {
str = sc.next();
}
}
}程序结构分析
程序功能主要是演示while循环语句的使用。
程序中循环变量str是通过sc.next()获取用户输入来修改的,用户每次输入字符串相当于为str重新赋值,直到用户输入quit字符串时,循环条件变为假,程序退出循环。
循环结构是程序中一种很重要的结构,其特点是,在给定条件成立时,重复执行某程序段,直到条件不成立为止。给定的条件为循环条件,反复执行的程序段称为循环体,循环条件必须要在循环体中改变,否则可能会出现无限循环的结果。