虽然循环没有中断?? C++

While loop not breaking?? C++

我正在尝试用 C++ 构建一个简单的骰子游戏。我不明白为什么它没有跳出 while 循环。

您只能下注 100、300 或 500 欧元。

即使我输入的赌注“100-300-500”应该是正确的。它仍然循环并说这是一个无效的赌注。当我有 if ((bet1 == 100) || (bet1 ==300) || (bet1==500))

时,为什么它不进入 if 语句

我试过将 if 语句放在 while 循环和各种事情之前。我无法让它工作。

cout << "Please place a bet. 100, 300, 500kr" << endl;
cin >> bet1;

while ((bet1 <= 99) || (bet1 >= 101) || (bet1 <= 299) || (bet1 >= 301) || (bet1 <= 499) || (bet1 >= 501)) {
    cout << "Please place a valid bet" << endl;
    cin >> bet1;
}
if ((bet1 == 100) || (bet1 ==300) || (bet1==500)) {
    cout << "You have deposited " << " " << bet1 << "" << "And you now have: "<< saldo - bet1 << " " << "Remaining on your account." << endl;
}

任何有限整数值都是 >=101<=299。 oring更多的条件不变,条件总是true.

如果你想循环直到 bet1100,300500:

while ( bet1 != 100 && bet1 != 300 && bet1 != 500) {...

想象一下: 有人输入 100。现在 while 循环检查:<=99?不。 >>或者<<也许>=101?不。 >>或者<< <=299?这是!因此,条件为真,要求有效投注。

从这里了解如何解决这个问题。

您在 while 循环中的条件总是 true。您可以通过以下方式查看有效号码:

while (bet1 != 100 && bet1 != 300 && bet1 != 500)
{
    cout << "Please place a valid bet" << endl;
    cin >> bet1;
}

这个循环

while ((bet1 <= 99) || (bet1 >= 101) || (bet1 <= 299) || (bet1 >= 301) || (bet1 <= 499) || (bet1 >= 501)) {
    cout << "Please place a valid bet" << endl;
    cin >> bet1;
}

是任何有效输入值 100、300 或 500 的无限循环。

例如,如果用户将输入 100,则至少此条件 (bet1 <= 299) 的计算结果为真。如果用户将输入 300,则至少此条件 (bet1 >= 101) 的计算结果为真。如果用户将输入 500,那么至少此条件 (bet1 >= 101) 的计算结果再次为真。

您应该重写 while 循环,例如

while ( bet1 != 100 && bet1 != 300 && bet1 != 500 )  {
    cout << "Please place a valid bet" << endl;
    cin >> bet1;
}

使用您编写循环的方法,条件可能类似于

while ( ( bet1 <= 99 ) || ( bet1 >= 101 && bet1 <= 299 ) || (bet1 >= 301 && bet1 <= 499 ) || ( bet1 >= 501 ) ) {
    cout << "Please place a valid bet" << endl;
    cin >> bet1;
}

这永远是真的:(bet1 >= 101) || (bet1 <= 299)

数轴上的所有数字要么 >= 101 要么 <= 299

您需要使用逻辑与 (&&) 运算符,例如 ((bet1 >= 101) && (bet1 <= 299)) || ((bet1 >= 301) && (bet1 <= 499))