我对c ++中多个if-else的简单程序感到困惑。代码
如下。
include<iostream.h>
void main()
{
int i;
cout<<"Enter the number:";
if(i==1)
{
cout<<"Sunday";
}
if(i==2)
{
cout<<"Monday";
}
else
{
cout<<" invalid input";
}
}
当我尝试运行此代码时,输出会显示此信息。
Enter the number:1
Sunday invalid key
所以我的问题是为什么输出执行Else部分虽然输出为True ..?请帮我 。谢谢
答案 0 :(得分:3)
这是因为你没有&#34;多个if-else&#34;,真的。您有一个if
(没有else
),然后是另一个if
。这两个是独立的。你可能想要:
if(i==1)
{
cout<<"Sunday";
}
else if(i==2)
{
cout<<"Monday";
}
else
{
cout<<" invalid input";
}
这样可以确保只有在满足上述任何条件时才会运行最终的else
块。
答案 1 :(得分:1)
首先检查i
是否等于1。如果是这种情况,则打印“星期日”。此时if
语句已完成。之后,您检查(在单独的if
州)是否i
等于2,如果是这种情况,则打印“星期一”,如果不是,则打印“无效输入”。要获得所需的结果,请写
else if (i == 2)
仅在if
不为1时执行第二个else
/ i
语句。
或者,您可能希望使用switch
语句。
switch(i)
{
case 1:
cout << "Sunday";
break;
case 2:
cout << "Monday";
break;
default:
cout << "invalid input";
break;
}
但如果使用break
,请不要忘记switch
!
答案 2 :(得分:0)
您有两种不同的条件。一个是:
if(i==1) {
cout<<"Sunday";
} // this statement ends here.
另一个:
if(i==2) {
cout<<"Monday";
} else {
cout<<" invalid input";
}
当" invalid input"
不是2时,第二个结果始终为i
。
答案 3 :(得分:0)
此代码中存在多个错误。我在这里解释并修复了它 -
#include<iostream.h>
void main()
{
int i;
cout<<"Enter the number:";
cin >> i; //take the input number from the user
if(i==1)
{
cout<<"Sunday";
}
/* the i==1 and i==2 block will run separately unless you connect them with an else */
else if(i==2)
{
cout<<"Monday";
}
else
{
cout<<" invalid input";
}
}
答案 4 :(得分:0)
如果你想要正确的处理,你必须把别的东西放进去:
if(i==1)
cout<<"Sunday";
else if(i==2)
cout<<"Monday";
else
cout<<" invalid input";
使用else if,不处理第二个和第三个条件,因为第一个条件是alredy有效的。在你的代码中,它首先在第一个条件下处理代码,而不是因为输入不等于2,否则处理else下的代码。
答案 5 :(得分:0)
这是因为您对同一输入使用了两个分支语句
1。第一个if()语句检查您的值是否等于1
if(i == 1)
std::cout << "Sunday"; // here you have print "Sunday for 1
2. 然后再次使用其他if-else
语句检查您的值
if(i == 2)
std::cout << "Mondey";
else
std::cout << "invalid input"; // here you have print "invalid input"
//since i is not equal to 1