1

我试图让这个while循环工作,但由于某种原因,它会自动“假设”用户输入错误。

value是字符串(应该是字符吗?) A,BC字符串(应该是字符吗?)

void Course::set()
{
    cout << "blah blah blah" << endl;
    cout << "youre options are A, B, C" <<endl;
    cin >> value;

    while(Comp != "A" || Comp != "B" || Comp != "C") 
    {
        cout << "The character you enter is not correct, please enter one of the following: You're options are A, B, C" << endl;
        cin >> value;
    }
    cout << endl;
}
4

3 回答 3

6

在您的情况下,您应该使用 an&&而不是 an ||。目前,您的条件始终为真,因为Comp只能等于三个常数之一,但不能同时等于三个常数。

于 2013-02-26T19:42:18.863 回答
1

作为其他已发布解决方案的替代方案,有些人可能认为这更具可读性:

while(! (Comp == "A" || Comp == "B" || Comp == "C"))
{
    // do something
}

此外,正如其他人指出的那样,您可能打算:

cin >> Comp;

(因为你Comp没有value在你的while条件下使用。)

于 2013-02-26T20:57:47.527 回答
0

您在那里犯的错误是在构建块时考虑了语言的日常使用。if正如其他人回答的那样,您应该使用&&正确的逻辑。

于 2013-02-26T19:51:42.417 回答