gpt4 book ai didi

java - Java 中的 while (x = false) 和 while (!x) 有什么区别?

转载 作者:搜寻专家 更新时间:2023-11-01 03:57:38 26 4
gpt4 key购买 nike

抱歉,我是 Java 的新手,所以这个问题可能不清楚。

我最近一直在处理将 try 和 catch 语句包含在 while 循环中的问题,因为我想确保将获取输入包含在程序的其余部分之外。

我遇到了一个问题,即在 while 条件(例如 while (!done))中的变量前面使用感叹号 (!) 而不是使用 = false(例如 while (done = false))会改变我的程序运行的方式。

前者 (!done) 导致 try 和 except 语句按预期运行。后者 (done = false) 不会,只是跳过它们并继续执行代码的下一部分。

我的印象是!在变量之前表示与 var = false 相同的东西。

我错了吗?

这是一个例子:

import java.util.Scanner;

public class TestOne {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int num;
boolean inputDone = false;
while (!inputDone) {
try {
System.out.print("Enter in a number here: ");
num = input.nextInt();
inputDone = true;
}
catch (Exception e) {
System.out.println(e);
System.exit(0);
}
}
System.out.println("Success!");
}
}

目前,编译和运行程序会很顺利:它会提示我输入一个数字,输入一个字母或很长的数字会导致它打印出异常类型并退出。输入一个正常的数字会导致它打印 Success!

另一方面,如果我将 !inputDone 替换为 inputDone = false,它只会打印出 Success!当我运行程序时。

谁能给我解释一下 !和 while 循环中的 = false 语句?

最佳答案

注意 done = falsedone == false 之间的区别。第一个分配 donefalse 并评估为false,第二个比较donefalse,与 !done 完全相同。

所以如果你使用:

while (done = false)
{
// code here
}

然后 done 被设置为 false 并且 while 循环中的代码根本不运行。

关于java - Java 中的 while (x = false) 和 while (!x) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1451152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com