4

ifステートメントが互いに衝突するという問題があります。これが私のコードです:

std::cout << "1) Option 1\n";
std::cout << "2) Option 2\n";
std::cout << "3) Option 3\n";
std::cout << "4) Option 4\n";
std::cout << "Type your choice and hit ENTER \n";

std::cin >> Choice;

if(Choice == 1); 
{
std::cout << "Blah Blah\n";
}
if(Choice == 2);
{
std::cout << "Blah Blah\n";
}
if(Choice == 3);
{
std::cout << "Blah Blah\n";
}
if(Choice == 4);
{
std::cout << "Blah Blah\n";
}

お互いに遭遇するということは、つまり、ifステートメントを無視してすべてのコードを実行するため、次のように出力されるだけです。

Blah Blah
Blah Blah
Blah Blah
Blah Blah

私の間違いは何ですか?

4

4 に答える 4

30

セミコロンを削除する必要があります。if ステートメントを終了しています。

if(Choice == 1)
{
std::cout << "Blah Blah\n";
}
if(Choice == 2)
{
std::cout << "Blah Blah\n";
}
if(Choice == 3)
{
std::cout << "Blah Blah\n"
}
if(Choice == 4)
{
std::cout << "Blah Blah\n";
}

else ifs を使用して、コードをクリーンアップすることもできます。

于 2012-05-13T01:24:47.997 に答える
5

ここで switch ステートメントを使用しなかったのはなぜですか? コードを本当にクリーンアップします。

std::cin >> Choice;

switch(Choice)
{
case 1:
std::cout << "Blah Blah\n";
break;

case 2:
std::cout << "Blah Blah\n";
break;

case 3:
std::cout << "Blah Blah\n";
break;

case 4:
std::cout << "Blah Blah\n";
break;
}
于 2012-05-13T01:27:31.637 に答える
1

ifステートメントの範囲を制限するセミコロンとは別に、ネストされたifループを使用することをお勧めします。それらは実行が高速です。

于 2012-05-13T01:45:49.083 に答える
1

条件;の前にドロップすると、機能します。ifまた、オプションは相互に排他的であるため、次のように記述したほうがよいでしょう。

if (Choice == 1) {
    std::cout << "Blah Blah\n";
} else if (Choice == 2) {
    std::cout << "Blah Blah\n";
} else if (Choice == 3) {
    std::cout << "Blah Blah\n";
} else if (Choice == 4) {
    std::cout << "Blah Blah\n";
}

...またはswitch、他の回答で指摘されているように、を使用します。

于 2012-05-13T01:52:09.830 に答える