0

私は最終プロジェクトのテキストアドベンチャーに取り組んでおり、「look lantern」のようなものを入力したかどうかをチェックするIfステートメントがたくさんあり、それに関する情報が表示されます.

「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

はい、2 つのブロックがあります。最初のブロックです。

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

そして2番目のもの:

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

1 つのブロックのみを実行する場合は、最初のブロックが失敗した場合にのみ 2 番目のブロックを実行する必要があります。

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 normal lantern.」が出力されます。

その後、2 番目ifが実行され、一致しないため、else分岐が実行され、「You can't do that.」が出力されます。

于 2012-05-07T06:32:26.630 に答える