如何退出while循环(继续)

时间:2018-11-23 23:39:27

标签: c++ while-loop do-while continue

我一直在尝试解决我的编码中的一个简单问题(我是C ++的新手)。

基本上,我正在尝试使用

退出while循环

continue

break

但是它不起作用。问题是

cout << "it worked!";

零件未执行。

#include <iostream>
#include <string>
using namespace std;

int main() {
    int userChoice=0;
    cout<<"1 for addiction and 2 for subtraction\n";
    do{
        if(cin >> userChoice){
            switch (userChoice) {
                case 1:
                    continue;
                case 2:
                    continue;
                default:
                    cout<<"Please select 1 for addiction or 2 for subtraction.\n";
                    break;
            }
        }
    }while(userChoice!=1 || userChoice!=2);

    cout<<"it worked!";
}

int addiction(int a,int b){
    return a+b;
}

int subtraction(int a,int b){
    return a-b;
}

1 个答案:

答案 0 :(得分:1)

不可能离开循环,因为无论userChoice总是 “不是1”还是“不是2”(永远不能都是!)。

因此,由于continue总是会进行另一次迭代,并且由于break使您跳出switch(不是循环),因此循环永远不会结束,并且cout将永远不会执行。

在我看来,只要userChoice不是1 也不是2:

while(userChoice!=1 && userChoice!=2);

这有时会使初学者感到困惑,他们采用英语快捷方式,例如“ userChoice既不是1也不是2”,而他们的意思是“ userChoice既不是1也不是2”,并且没有意识到C ++没有“ nether / nor” ”结构,因此最终在没有仔细考虑的情况下错误地写出“ userChoice不是1或userChoice不是2”。

由于肯定比否定更直观,所以一种向自己澄清的方法是应用戴摩根定律。您的固定代码等效于:

while(!(userChoice == 1 || userChoice == 2));

即“在userChoice是1或2的情况下不是循环。”可以说这是更糟糕的代码,但是以这种方式简要地写出来可以帮助您理解。