Java 循环结构:while 和 do…while
在 Java 中,while
和 do...while
是两种基本的循环控制结构,用于在特定条件下重复执行一段代码。
1. while 循环
语法:
while (condition) {
// 循环体
}
知识点:
condition
是一个布尔表达式。- 在每次循环开始前,都会检查
condition
是否为true
。 - 如果
condition
为true
,则执行循环体;否则,跳出循环。 while
循环适用于在循环开始前已知循环条件的情况。
实际案例:
public class WhileExample {
public static void main(String[] args) {
int count = 0;
while (count < 5) {
System.out.println("Count: " + count);
count++;
}
}
}
输出:
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
2. do…while 循环
语法:
do {
// 循环体
} while (condition);
知识点:
condition
是一个布尔表达式。- 循环体至少会被执行一次,因为
condition
是在循环体执行完毕后检查的。 - 如果
condition
为true
,则重复执行循环体;否则,跳出循环。 do...while
循环适用于在循环开始前必须执行一次循环体的情况,且循环条件在循环体之后检查。
实际案例:
public class DoWhileExample {
public static void main(String[] args) {
int count = 0;
do {
System.out.println("Count: " + count);
count++;
} while (count < 5);
}
}
输出:
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
总结
- while 循环:在进入循环之前检查条件,如果条件为
true
,则执行循环体。适用于循环条件在循环开始之前已知的情况。 - do…while 循环:无论条件如何,循环体至少执行一次,然后在每次循环结束后检查条件。适用于循环体必须至少执行一次的情况。
这两种循环结构的选择取决于你的具体需求,以及是否需要确保循环体至少执行一次。
在Java中,while
和do...while
是两种用于实现循环的语句,它们有相似之处,但也有一些关键的区别。以下是这两种循环的详细区分:
相似之处
- 条件判断:两种循环都依赖于一个布尔条件来决定是否继续执行循环体。
- 循环体:当条件为
true
时,两种循环都会执行循环体内的代码。
关键区别
-
执行顺序:
while
循环在每次迭代之前检查条件。如果条件为false
,则循环体不会被执行,循环直接结束。do...while
循环在每次迭代之后检查条件。这意味着循环体至少会被执行一次,因为条件检查发生在循环体执行之后。
-
适用场景:
while
循环适用于在循环开始前已知是否需要执行循环体的情况。do...while
循环适用于必须至少执行一次循环体,然后根据某个条件决定是否继续执行的情况。
代码示例
while循环示例:
int count = 0;
while (count < 5) {
System.out.println("Count: " + count);
count++;
}
// 输出:Count: 0, Count: 1, Count: 2, Count: 3, Count: 4
在这个例子中,while
循环在每次迭代之前检查count < 5
这个条件。当count
增加到5时,条件变为false
,循环结束。
do…while循环示例:
int count = 0;
do {
System.out.println("Count: " + count);
count++;
} while (count < 5);
// 输出:Count: 0, Count: 1, Count: 2, Count: 3, Count: 4
在这个例子中,do...while
循环至少执行一次循环体,然后在每次迭代之后检查count < 5
这个条件。尽管结果看起来与while
循环相同,但在这个特定的例子中,即使count
的初始值设为5,do...while
循环也会打印出Count: 5
(尽管随后会立即结束循环),而while
循环则根本不会执行。
总结
- 使用
while
循环时,如果条件一开始就为false
,则循环体不会被执行。 - 使用
do...while
循环时,无论条件如何,循环体至少会被执行一次。
选择哪种循环取决于您的具体需求。如果您需要在循环开始前检查条件,则使用while
循环。如果您需要确保循环体至少执行一次,则使用do...while
循环。
当然可以。基于您引用的关于 do...while
循环的描述,我将为您提供更多实际的 Java 编程案例,以加深您对这种循环结构的理解。
案例一:用户输入验证
在这个例子中,我们使用 do...while
循环来确保用户输入了一个有效的整数。
import java.util.Scanner;
public class UserInputValidation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0; // 初始化一个变量来存储用户输入的数字
boolean isValid = false; // 初始化一个布尔变量来检查输入是否有效
do {
System.out.print("请输入一个整数: ");
if (scanner.hasNextInt()) {
number = scanner.nextInt();
isValid = true; // 如果输入是整数,则设置isValid为true
} else {
System.out.println("输入无效,请输入一个整数。");
scanner.next(); // 清除无效输入
}
} while (!isValid); // 当输入无效时,继续循环
System.out.println("您输入的整数是: " + number);
scanner.close();
}
}
在这个例子中,无论用户第一次输入的是什么,循环体都会至少执行一次。然后,根据输入是否有效(即是否为整数),isValid
变量会被更新,循环会继续或结束。
案例二:菜单驱动的程序
在这个例子中,我们使用 do...while
循环来创建一个简单的菜单驱动的程序,用户可以反复选择直到他们选择退出。
import java.util.Scanner;
public class MenuDrivenProgram {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int choice;
boolean exit = false;
do {
System.out.println("请选择一个选项:");
System.out.println("1. 显示消息");
System.out.println("2. 计算两个数的和");
System.out.println("3. 退出");
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("这是一个消息!");
break;
case 2:
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
System.out.println("两个数的和是: " + (num1 + num2));
break;
case 3:
exit = true;
System.out.println("退出程序。");
break;
default:
System.out.println("无效的选择,请重试。");
}
} while (!exit);
scanner.close();
}
}
在这个例子中,用户会看到一个菜单,并可以选择执行不同的操作。他们可以通过选择选项3来退出程序。在退出之前,无论用户选择什么,循环体都会至少执行一次。
案例三:猜数字游戏
在这个例子中,我们使用 do...while
循环来创建一个简单的猜数字游戏。
import java.util.Random;
import java.util.Scanner;
public class GuessNumberGame {
public static void main(String[] args) {
Random random = new Random();
Scanner scanner = new Scanner(System.in);
int targetNumber = random.nextInt(100) + 1; // 生成1到100之间的随机数
int guess = 0;
boolean win = false;
do {
System.out.print("请输入一个1到100之间的数字来猜测: ");
guess = scanner.nextInt();
if (guess < targetNumber) {
System.out.println("太小了!");
} else if (guess > targetNumber) {
System.out.println("太大了!");
} else {
win = true;
System.out.println("恭喜你,猜对了!");
}
} while (!win);
scanner.close();
}
}
在这个例子中,用户会反复猜测一个随机数,直到他们猜对为止。每次猜测后,程序都会告诉他们猜的数字是太大还是太小。由于使用了 do...while
循环,用户至少会进行一次猜测。
这些案例展示了 do...while
循环在不同场景下的应用,希望它们能帮助您更好地理解这种循环结构。