我正在为最终项目进行文本冒险,我有很多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
语句吗?
答案 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
分支,输出:“你不能这样做。”