提问人:james51 提问时间:6/7/2023 最后编辑:Federico klez Cullocajames51 更新时间:8/11/2023 访问量:153
Java 中 while 和 do-while 代码之间的区别
Difference between while and a do-while code in Java
问:
我现在正在学习java,我看了视频,我还是不明白,甚至chatgpt解释它我仍然不明白,有人可以给我一个简短的简单解释和while的例子以及do-while语句吗?
我尝试了这个代码块:
import java.util.Scanner;
public class learn {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = "";
while(name.isBlank()) {
System.out.println("your name pls : ");
name = scanner.nextLine();
}
System.out.println("Hello "+name);
}
}
这在代码块时做:
import java.util.Scanner;
public class learn {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = "";
do {
System.out.println("your name pls : ");
name = scanner.nextLine();
} while(name.isBlank());
System.out.println("Hello "+name);
}
}
但我仍然不明白其中的区别
答:
这取决于您要解决的问题。
如果需要在成为循环之前先初始化条件,则可以使用 .如果条件已初始化,则可以使用 。while { ... }
do { ... } while
我喜欢把它想象成“顶部测试循环”和“底部测试循环”,其中“测试”的意思是“我退出循环吗?
另一个重要的区别是底部测试循环始终至少运行一次。因此,如果需要在循环中至少运行一次代码,则可以使用 do-while。
编辑
@h0r53想要一个 while 循环初始化条件的示例。所以这里有两个例子:
Java 迭代器接口必须在循环之前通过调用“iterator.next()”来“启动”,这最好使用 top-test 循环来完成 编号: https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
Java Pattern Matcher 接口具有 ,它再次启动循环条件。这最好使用顶部测试循环来完成。编号: https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html
matcher.matches()
评论
在 While 循环中,在启动循环块之前,它会检查提供的条件是否满足 (true)。举个例子,
while(false){
System.out.println("While");
}
另一方面,在 do while 中,该块将在检查 while 中的条件之前执行一次。以这个为例,
do{
System.out.println("Do While");
}while(false);
其中 while 循环不会打印任何内容,但 do while 会在检查条件和终止之前打印一次......Do While
我希望它能帮助你理解......
这里有一个例子,希望能非常清楚地说明循环和循环之间的区别。do...while
while
在下面的代码中,该函数将返回 true 或 false(在这个简单示例中始终返回 true)以指示它是否“安全跳转”。如果跳跃不安全,那么如果你仍然这样做,你就会死。考虑到这一点,如果您在检查这样做是否安全之前,那么您就是在用自己的生命赌博。另一方面,如果你在跳跃前检查以确保它是安全的,那么你就可以保证生存下来:safeToJump()
jump()
public static void main(String[] args) {
do {
jump();
} while (safeToJump());
while (safeToJump()) {
jump();
}
}
public static boolean safeToJump() {
return true;
}
public static void jump() {
System.out.println("Jump!");
}
在 中,在第一个循环中,我们在检查部分中的条件语句之前运行循环的主体,因此我们可能在条件不安全的情况下跳转。这可能是可能导致死亡的危险行为。因此,做一个...while
循环在检查条件语句之前将始终至少运行一次。main()
do...while
while
在第二个循环中,条件语句在正文之前进行检查,因此只有在返回并且条件实际上可以安全跳转时才会执行命令。考虑到这一点,如果返回了 ,那么循环的主体根本不会运行。因此,while
循环将运行零次或多次
。while
jump()
true
safeToJump()
false
看到区别了吗?如果希望循环的主体在条件检查之前运行,请使用循环。相反,如果您希望循环的主体在条件检查后运行,请使用循环。do...while
while
如果要在循环的条件语句中分配值,则可能需要先执行代码块。
以下是 C 编程语言(有时称为 K&R)的例外。
我之所以使用这个例子,是因为 Java 从 C 继承了它的大部分组件。
这是来自 3.6 Loops–Do-while。
“经验表明,do-while的使用率比while和for少得多。尽管如此,它有时还是很有价值的,例如以下函数 itoa,它将数字转换为字符串(atoi 的反函数)。这项工作比最初想象的要简单一些,因为生成数字的简单方法以错误的顺序生成它们。我们选择向后生成字符串,然后反转它。
/* itoa: convert n to characters in s */
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
i = 0;
do { /* generate digits in reserve order */
s[i++] = n % 10 + '0'; /* get next digit */
} while ((n /= 10) > 0); /* delete it */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
此外,Java 还通过以下内容解释了其中的区别。
“do-while 和 while 之间的区别在于,do-while 在循环的底部而不是顶部评估其表达式。因此,do 块中的语句始终至少执行一次......”
while 和 do-while 语句(™学习 Java 语言> Java 教程>语言基础知识)。
While loop 在执行循环体之前检查条件,
while(condition){
//block of statements to be executed repeatedly
}
Do-while 循环在执行循环体后检查条件,
do{
//block of statements to be executed repeatedly
}while(condition)
在 while 循环中,仅当条件为 true 时才会执行语句块。
while(false){
System.out.println("Hello World");
}
output:
但是,在 do-while 循环中,循环内的语句块将至少执行一次,即使条件为 false。
do{
System.out.println("Hello World");
}while(false)
output: Hello world
只有在使用 while 时,才会根据条件开始操作。但是当我们使用 Do-While 结构时,它首先执行一次操作,然后根据条件继续。
评论
while-do
do-while