Java while和do while循环详解(附带实例)
Java 中的 while 语句也称条件判断语句,它的循环方式是利用一个条件来控制是否要继续反复执行这个语句。
while 循环语句的语法如下:
while 循环语句的执行过程如下图所示:

图 1 while语句的执行过程
【实例】计算 1~1000 的相加结果。
创建 GetSum 类,在主方法中通过 while 循环计算 1~1000 相加的和并输出最终的相加结果。
注意,初学者经常犯的一个错误就是在 while 表达式的括号后加“;”。如:
再有,do while 语句与 while 语句的一个明显区别是,do while 语句在结尾处多了一个分号。
根据 do while 循环语句的语法特点总结出 do while 循环语句的执行过程,如图下所示:

图 2 do while循环语句的执行过程
【实例】使用 do while 语句进行用户登录验证。
创建 LoginService 类,首先提示用户输入 6 位密码,然后使用 Scanner 扫描器类获取用户输入的密码,最后进入 do while 语句中进行循环,以判断用户输入的密码是否正确,如果用户输入的密码不是“931567”,则让用户反复输入,直到输入正确的密码。
while 循环语句的语法如下:
while(条件表达式){ 语句序列 }当条件表达式的返回值为真时,则执行“{}”中的语句,当执行完“{}”中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。
while 循环语句的执行过程如下图所示:

图 1 while语句的执行过程
【实例】计算 1~1000 的相加结果。
创建 GetSum 类,在主方法中通过 while 循环计算 1~1000 相加的和并输出最终的相加结果。
public class GetSum { public static void main(String args[]) { int x = 1; // 从 1 开始 int sum = 0; // 相加的结果 while (x <= 1000) { // 循环 1000 次 sum = sum + x; // sum 与之前计算的和相加 x++; // 每次循环后 x 的值 + 1 } System.out.println("sum = " + sum); // 输出最终的相加结果 } }运行结果如下:
sum = 500500
注意,初学者经常犯的一个错误就是在 while 表达式的括号后加“;”。如:
while(x == 5); System.out.println("x的值为5");这时程序会认为要执行一条空语句,而进入无限循环,Java 编译器又不会报错。这可能会浪费很多时间调试程序,应注意这个问题。
Java do while循环语句
do while 循环语句的语法如下:do{ 语句序列 }while(条件表达式);do while 循环语句与 while 循环语句类似,它们之间的区别是,while 语句先判断条件是否成立再执行循环体,而 do while 循环语句则先执行一次循环后,再判断条件是否成立。也就是说,do while 循环语句“{}”中的程序段至少要被执行一次。
再有,do while 语句与 while 语句的一个明显区别是,do while 语句在结尾处多了一个分号。
根据 do while 循环语句的语法特点总结出 do while 循环语句的执行过程,如图下所示:

图 2 do while循环语句的执行过程
【实例】使用 do while 语句进行用户登录验证。
创建 LoginService 类,首先提示用户输入 6 位密码,然后使用 Scanner 扫描器类获取用户输入的密码,最后进入 do while 语句中进行循环,以判断用户输入的密码是否正确,如果用户输入的密码不是“931567”,则让用户反复输入,直到输入正确的密码。
import java.util.Scanner; // 导入 Scanner 类 public class LoginService { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 创建扫描器,获取在控制台中输入的值 int password; // 保存用户输入的密码 do { System.out.println("请输入6位数字密码:"); // 输出提示 password = sc.nextInt(); // 将用户在控制台中输入的密码记录下来 } while (931567 != password); // 如果用户输入的密码不是“931567”,则继续执行循环 System.out.println("登录成功"); // 提示循环已结束 sc.close(); // 关闭扫描器 } }运行结果为:
请输入6位数字密码:
123456
请输入6位数字密码:
987321
请输入6位数字密码:
931567
登录成功