【问题标题】:Multiple OR conditions in while loop in C++C ++中while循环中的多个OR条件
【发布时间】:2022-07-25 01:52:24
【问题描述】:

我试图在我的 WHILE 循环中放置多个 OR 条件,这样除非我的“决策”变量等于“1”或“2”,否则它将继续循环。但是,即使我输入“1”或“2”,它仍然会循环。

cout << "Would you like to add or subtract these numbers?"
<< endl
<< "(1) for addition" 
<< endl
<< "(2) for subtraction"
<< endl
<< "Select one: ";
cin >> decision;

while ((decision != 1) || (decision != 2))
    {
        cout << "Please pick (1) for addition or (2) for subtraction: ";
        cin >> decision;
    }

    if (decision == 1)
    {
        cout << firstNum << " + " << secondNum << " = " << firstNum + secondNum;
    }
    else if (decision == 2)
    {
        cout << firstNum << " - " << secondNum << " = " << firstNum - secondNum;
    }

个别条件适用,即

while (decision != 1)

while (decision != 2)

但不是在一起的时候。我使用 OR 运算符是否错误?

我才刚刚开始学习 C++,所以请多多包涵,不胜感激!

【问题讨论】:

  • while ((decision != 1) || (decision != 2)) 总是正确的,因为decision 不能同时是 1 和 2。
  • 你能想出decision 的任何值,它可以使decision != 1 decision != 2 false 同时出现吗?
  • 我认为你需要&amp;&amp; 操作符
  • 或者!(decision == 1 || decision == 2),更接近口头描述“除非我的变量等于1或2”。

标签: c++ while-loop


【解决方案1】:

那就是while ((decision != 1) &amp;&amp; (decision != 2))。 但我推荐这种方式。

bool decision_check(int decision) {
    switch (decision) {
    case 1:
        cout << firstNum << " + " << secondNum << " = " << firstNum + secondNum;
        return true;

    case 2:
        cout << firstNum << " - " << secondNum << " = " << firstNum - secondNum;
        return true;

    default:
        cout << "Please pick (1) for addition or (2) for subtraction: ";
        return false;
    }
}

while中使用这个函数。

【讨论】:

  • 这个小程序可能没问题,但在更大的设计中你不会想要这样做,因为它违反了单一责任原则,并且比函数名称声称的要多。
【解决方案2】:

检查this。 它可能会帮助您理解该逻辑。

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2013-09-29
    • 1970-01-01
    • 2016-10-08
    • 2023-03-10
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多