do {
System.out.println("Please enter the cost: ");
Cost1 = input.nextDouble();
} while (Cost1 <= 100000 || Cost1 >= 900000);
那是我的代码。如果我输入 100001 它会跳过循环,但如果我输入 100000 它不会。为什么是这样?
do {
System.out.println("Please enter the cost: ");
Cost1 = input.nextDouble();
} while (Cost1 <= 100000 || Cost1 >= 900000);
那是我的代码。如果我输入 100001 它会跳过循环,但如果我输入 100000 它不会。为什么是这样?
错误的条件(基于您对它的期望)
Cost1 <= 100000 || Cost1 >= 900000
方法
While Cost1 <= 100k OR Cost1 >=900K
所以当你把100001
它既不小于等于100k
也不大于等于900K
如果您在Cost1
不低于 100 000 且不高于 900 000 时输入 100 001,那么您将退出 while 语句。
不过,如果您输入 100 000,则 while 的第一个条件已完成,因此该语句将再次执行(惰性求值)。
它就像您要求的(或至少写的)一样工作。
正如您所指出的,如果大于 100000 且小于 900000 ,Cost1
则将跳过循环。
所以对于 100000 它不会跳过(因为它等于 100000)而对于 100001 它会跳过(因为它在 100000 和 900000 之间)
根据条件,它显然会退出循环,因为 100001 >100000 我认为你想要别的东西并且错误地你输入了错误的条件。在这里发布你的查询
您的循环仅在值不在 100000 和 900000 之间时执行,给定 or 逻辑。
这种逻辑似乎超出了正常情况(虽然它可能是有意的),我假设您只希望在这些值之间进行迭代,这可以通过使用和逻辑来解决。
do {
System.out.println("Please enter the cost: ");
Cost1 = input.nextDouble();
} while (Cost1 >= 100000 && Cost1 <= 900000);