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

时间:2017-08-17 21:06:53

标签: c++

我正在完成一些初学者项目,其中一个是创建一个只迎接两个特定名称的程序(Alice和Bob)。我认为最好的方法是使用while循环,所以只要name不等于Bob或Alice,它就会一直提示用户输入正确的名字。但是,程序在while循环中打印输出,即使它是Bob或Alice!我需要一些帮助才能把这个放在正确的位置。非常感谢提前。

 #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;
}

1 个答案:

答案 0 :(得分:0)

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

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

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

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

名字一次不能是两件事。为了达到这个条件,你的名字必须是Bob Alice或Alice 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;