我正在完成一些初学者项目,其中一个是创建一个只迎接两个特定名称的程序(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;
}
答案 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;