因此,我正在使用c ++制作一个简单的计算器,该计算器从用户输入一个字符串并将该输入作为操作。
std::cout<<"Enter your operation: ";
std::string operation;
std::cin>>operation;
while(operation != string("+")|| operation != string("-") || operation != string("*"))
{
std::cout<<"Invalid operation! Please enter a valid one: ";
std::cin>>operation;
}
但是无论输入什么,都会收到错误消息“无效的操作!请输入一个有效的字符:”。请在这里帮助我,谢谢!
您差点就吃了。您只需要在循环条件中使用布尔运算符和 &&
而不是或 ||
:
std::cout<<"Enter your operation: ";
std::string operation;
std::cin>>operation;
while(operation != string("+") && operation != string("-") && operation != string("*"))
{
std::cout<<"Invalid operation! Please enter a valid one: ";
std::cin>>operation;
}
只要operation
不是+
,不是-
,也不是*
,您要一直循环。因此,如果这是其中之一,则条件将为false
,并且循环将结束。
您有逻辑错误。如果while条件为true,则必须到达错误消息。因此,此条件必须具有&&
而不是||
,以确保覆盖您的条件。
您的逻辑是错误的。正确的是
std::cout<<"Enter your operation: ";
std::string operation;
std::cin>>operation;
while(!(operation == "+"|| operation == "-" || operation == "*"))
{
std::cout<<"Invalid operation! Please enter a valid one: ";
std::cin>>operation;
}
并且根据DeMorgan法律,它可以写成
while(operation != "+"&& operation != "-" && operation != "*")