跳到主要内容

Java while 和 do...while 循环

提示
  1. while循环基础:Java中的while循环在给定条件为真时重复执行代码块,循环停止时条件为假。
  2. do...while循环特性do...while循环至少执行一次循环体,然后根据条件判断是否继续执行,适用于至少执行一次循环的场景。
  3. for与while循环的选择:当迭代次数已知时,通常使用for循环;而whiledo...while循环适用于迭代次数未知的情况。

在计算机编程中,循环用于重复执行一段代码。例如,如果你想显示一条消息 100 次,那么你可以使用循环。这只是一个简单的例子;使用循环你可以实现更多功能。

在之前的教程中,你学习了 Java for 循环。这里,你将学习 whiledo...while 循环。

Java while 循环

Java while 循环用于在满足特定条件时运行特定代码。while 循环的语法是:

while (测试表达式) {
// 循环体
}

这里,

  1. while 循环评估括号 () 内的 测试表达式
  2. 如果 测试表达式 计算结果为 true,则执行 while 循环内的代码。
  3. 测试表达式 会再次被评估。
  4. 此过程持续进行,直到 测试表达式false
  5. 测试表达式 计算结果为 false 时,循环停止。

要了解更多关于条件的信息,请访问 Java 关系逻辑运算符

while 循环的流程图

Java 中 while 循环的流程图

示例 1:显示 1 到 5 的数字

// 程序用于显示 1 到 5 的数字

class Main {
public static void main(String[] args) {

// 声明变量
int i = 1, n = 5;

// 从 1 到 5 的 while 循环
while(i <= n) {
System.out.println(i);
i++;
}
}
}

输出

1
2
3
4
5

以下是此程序的工作原理。

迭代变量条件: i <= n操作
第1次i = 1 n = 5true打印 1。i 增加到 2
第2次i = 2 n = 5true打印 2。i 增加到 3
第3次i = 3 n = 5true打印 3。i 增加到 4
第4次i = 4 n = 5true打印 4。i 增加到 5
第5次i = 5 n = 5true打印 5。i 增加到 6
第6次i = 6 n = 5false循环终止

示例 2:仅计算正数的总和

// Java 程序用于计算正数的总和
import java.util.Scanner;

class Main {
public static void main(String[] args) {

int sum = 0;

// 创建 Scanner 类的对象
Scanner input = new Scanner(System.in);

// 从用户那里输入一个整数
System.out.println("请输入一个数字");
int number = input.nextInt();

// 只要输入的数字是正数,while 循环就继续
while (number >= 0) {
// 只加正数
sum += number;

System.out.println("请输入一个数字");
number = input.nextInt();
}

System.out.println("总和 = " + sum);
input.close();
}
}

输出

请输入一个数字
25
请输入一个数字
9
请输入一个数字
5
请输入一个数字
-3
总和 = 39

在上述程序中,我们使用了 Scanner 类 来从用户那里获取输入。这里,nextInt() 方法用于从用户获取整数输入。

只要用户输入的是正数,while 循环就会继续。在每次迭代过程中,用户输入的数字都会被加到 sum 变量中。

当用户输入负数时,循环终止。最后,显示总和。

Java do...while 循环

do...while 循环与 while 循环相似。然而,do...while 循环在检查测试表达式之前会先执行一次循环体。例如,

do {
// 循环体
} while(测试表达式);

这里,

  1. 首先执行循环体,然后评估 测试表达式
  2. 如果 测试表达式 计算结果为 true,则 do 语句内的循环体再次执行。
  3. 测试表达式 再次被评估。
  4. 如果 测试表达式 计算结果为 true,则 do 语句内的循环体再次执行。
  5. 这个过程持续进行,直到 测试表达式false。然后循环停止。

do...while 循环的流程图

Java 中 do...while 循环的流程图

让我们看看 do...while 循环是如何工作的。

示例 3:显示 1 到 5 的数字

// Java 程序用于显示 1 到 5 的数字

import java.util.Scanner;

// 程序用于计算 1 到 100 的自然数之和。

class Main {
public static void main(String[] args) {

int i = 1, n = 5;

// 从 1 到 5 的 do...while 循环
do {
System.out.println(i);
i++;
} while(i <= n);
}
}

输出

1
2
3
4
5

以下是此程序的工作原理。

迭代变量条件: i <= n操作
   i = 1 n = 5未检查打印 1。i 增加到 2
第1次i = 2 n = 5true打印 2。i 增加到 3
第2次i = 3 n = 5true打印 3。i 增加到 4
第3次i = 4 n = 5true打印 4。i 增加到 5
第4次i = 5 n = 5true打印 6。i 增加到 6
第5次i = 6 n = 5false循环终止

示例 4:正数之和

// Java 程序用于计算正数之和
import java.util.Scanner;

class Main {
public static void main(String[] args) {

int sum = 0;
int number = 0;

// 创建 Scanner 类的对象
Scanner input = new Scanner(System.in);

// 只要输入的数字是正数,do...while 循环就继续
do {
// 只加正数
sum += number;
System.out.println("请输入一个数字");
number = input.nextInt();
} while(number >= 0);

System.out.println("总和 = " + sum

);
input.close();
}
}

输出 1

请输入一个数字
25
请输入一个数字
9
请输入一个数字
5
请输入一个数字
-3
总和 = 39

这里,用户输入一个正数,该数字被加到 sum 变量中。这个过程持续进行,直到数字为负数。当数字为负数时,循环终止并显示总和,不加上负数。

输出 2

请输入一个数字
-8
总和为 0

这里,用户输入了一个负数。测试条件将为 false,但循环内的代码会执行一次。

无限 while 循环

如果循环的 条件 始终为 true,那么循环将无限次运行(直到内存满)。例如,

// 无限 while 循环
while(true){
// 循环体
}

以下是一个无限 do...while 循环的例子。

// 无限 do...while 循环
int count = 1;
do {
// 循环体
} while(count == 1)

在上述程序中,测试表达式 始终为 true。因此,循环体将无限次运行。

for 和 while 循环

当迭代次数已知时,使用 for 循环。例如,

for (let i = 1; i <=5; ++i) {
// 循环体
}

当迭代次数未知时,通常使用 whiledo...while 循环。例如,

while (条件) {
// 循环体
}