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
循环在不同场景下的应用,希望它们能帮助您更好地理解这种循环结构。