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

...或者使用 a switch,正如其他答案中所指出的那样。

于 2012-05-13T01:52:09.830 回答
1

除了限制 if 语句范围的分号之外,我还建议您使用嵌套的 if 循环。它们的执行速度更快。

于 2012-05-13T01:45:49.083 回答