0
    do {
        System.out.println("Please enter the cost: ");
        Cost1 = input.nextDouble();
    } while (Cost1 <= 100000 || Cost1 >= 900000);

那是我的代码。如果我输入 100001 它会跳过循环,但如果我输入 100000 它不会。为什么是这样?

4

5 回答 5

1

错误的条件(基于您对它的期望)

Cost1 <= 100000 || Cost1 >= 900000

方法

While Cost1 <= 100k OR Cost1 >=900K

所以当你把100001 它既不小于等于100k也不大于等于900K

于 2013-04-09T08:43:35.373 回答
0

如果您在Cost1不低于 100 000 且不高于 900 000 时输入 100 001,那么您将退出 while 语句。

不过,如果您输入 100 000,则 while 的第一个条件已完成,因此该语句将再次执行(惰性求值)。

于 2013-04-09T08:43:43.727 回答
0

它就像您要求的(或至少写的)一样工作。

正如您所指出的,如果大于 100000 且小于 900000 ,Cost1则将跳过循环。

所以对于 100000 它不会跳过(因为它等于 100000)而对于 100001 它会跳过(因为它在 100000 和 900000 之间)

于 2013-04-09T08:43:44.600 回答
0

根据条件,它显然会退出循环,因为 100001 >100000 我认为你想要别的东西并且错误地你输入了错误的条件。在这里发布你的查询

于 2013-04-09T08:46:37.743 回答
0

您的循环仅在值不在 100000 和 900000 之间时执行,给定 or 逻辑。

这种逻辑似乎超出了正常情况(虽然它可能是有意的),我假设您只希望在这些值之间进行迭代,这可以通过使用和逻辑来解决。

do {
    System.out.println("Please enter the cost: ");
    Cost1 = input.nextDouble();
} while (Cost1 >= 100000 && Cost1 <= 900000);
于 2013-04-09T08:47:09.850 回答