在 while 循环中使用字符串(OR 运算符)

Using a string in a while loop (OR operator)

本文关键字:OR 运算符 字符串 while 循环      更新时间:2023-10-16

我正在研究一些初学者项目,其中一个是创建一个只问候两个特定名称(爱丽丝和鲍勃(的程序。我认为最好的方法是使用 while 循环,所以只要名称不等于 Bob 或 Alice,它就会不断提示用户输入正确的名称。但是,程序会在 while 循环中打印输出,即使是鲍勃或爱丽丝!我需要一些帮助来纠正这个问题。提前非常感谢。

#include <iostream>
#include <string>
int main()
{
std::cout << "Please enter the correct name(s): ";
std::string name = " ";
std::cin >> name;
while (name != "Alice" || name!= "Bob")
{
std::cout << "Please enter the correct name(s): ";
std::cin >> name;
}
if (name == "Alice")
std::cout << "Hi Alice!" << std::endl;
if (name == "Bob")
std::cout << "Hi Bob!" << std::endl;
}

首先,欢迎来到C++世界!现在,让我们继续讨论您的问题。如果你看看这行,

while (name != "Alice" || name!= "Bob")

正如其他人所说,这包含了问题。你基本上是在说:

while (the name is NOT "Alice" OR the name is NOT "Bob")

名称不能同时是两件事。为了达到这种情况,你的名字必须是鲍勃·爱丽丝或爱丽丝·鲍勃。如果您查看以下代码行

std::cin >> name;

这是不可能的。计算机只接受一个单词。条件永远不会打。为了解决此问题,您应该执行以下操作:

while (name != "Alice" && name != "Bob")

这将解决问题。此外,如果要改进代码,可以执行以下操作:

#include <iostream>
#include <string>
int main()
{
std::string name = "";
std::cout << "Please enter the correct name: ";
std::cin >> name;
while (name != "Alice" && name != "Bob")
{
std::cout << "Please enter the correct name: ";
std::cin >> name;
}
std::cout << "Hi " << name << "!" << endl;