我遇到了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
我的错误是什么?
答案 0 :(得分: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来清理代码。
答案 1 :(得分: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;
}
答案 2 :(得分:1)
除了限制if语句范围的分号外,我建议你使用嵌套的if循环。它们执行起来更快。
答案 3 :(得分: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
,正如其他答案中所指出的那样。