其他声明重演了吗?

时间:2012-05-07 06:28:22

标签: c++ if-statement adventure

我正在为最终项目进行文本冒险,我有很多If语句检查是否输入了类似“look lantern”的内容,然后它会显示有关它的信息等等。

如果您键入类似“srjfdrszdgrf”的内容,我想这样做,它会告诉您“您不能这样做”。如果底部有else语句,但它似乎无法正常工作,而是在每else后重复if语句。
我做错了吗?

if (command == "look_lantern")
{
    cout << "It's an ordinary lantern.\n";
}
if (command == "look_door")
{
    cout << "It's a large wooden door.\n";
}
else
{
    cout << "You can't do that.\n";
}

所以当你输入“look lantern”时,它会说:

  

这是一个普通的灯笼   你不能这样做。

我在这里错误地使用了else语句吗?

2 个答案:

答案 0 :(得分:4)

是的,你有两个街区,第一个:

if (command == "look_lantern")
{
    cout << "It's an ordinary lantern.\n";
}

和第二个:

if (command == "look_door")
{
    cout << "It's a large wooden door.\n";
}
else
{
    cout << "You can't do that.\n";
}

如果您只想执行一个块,则只有在第一个块失败时才需要执行第二个块:

if (command == "look_lantern")
{
    cout << "It's an ordinary lantern.\n";
} else if (command == "look_door")
{
    cout << "It's a large wooden door.\n";
}
else
{
    cout << "You can't do that.\n";
}

这两个都被执行,因为在第一个之后没有任何停止执行。

答案 1 :(得分:2)

在这种情况下,您应该使用else if

if (command == "look_lantern")
{
    cout << "It's an ordinary lantern.\n";
}
else if (command == "look_door")
{
    cout << "It's a large wooden door.\n";
}
else
{
    cout << "You can't do that.\n";
}

如果你用旧方式编写代码,第一个if将被执行,并输出:“这是一个普通的灯笼。”

之后,第二个if将被执行,但它不匹配,因此执行else分支,输出:“你不能这样做。”