我正试图让这个循环工作但是出于某种原因,它会自动“假设”用户输入错误。
value
是一个字符串(它应该是char吗?)
A
,B
,C
是字符串(它们应该是char吗?)
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;
}
答案 0 :(得分:6)
在您的情况下,您应该使用&&
代替||
。目前,您的条件始终为真,因为Comp
只能等于三个常量中的一个,但不能同时全部三个。
答案 1 :(得分:1)
作为其他发布解决方案的替代方案,有些人可能会认为这更具可读性:
while(! (Comp == "A" || Comp == "B" || Comp == "C"))
{
// do something
}
另外,正如其他人所指出的那样,你可能打算:
cin >> Comp;
(因为您在Comp
条件中使用value
而不是while
。
答案 2 :(得分:0)
你在那里做的错误是在构建if
块时在语言的日常使用中思考。正如其他人所回答的那样,您应该使用&&
来获得正确的逻辑。