0

我正在为最终项目进行文本冒险,并且我有很多 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这里错误地使用了该语句吗?

4

2 回答 2

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

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

于 2012-05-07T06:30:42.170 回答
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,并输出:“It's a common lantern”。

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

于 2012-05-07T06:32:26.630 回答