黑马程序员技术交流社区
标题:
关于判断结果if(...)else if(...)的疑问
[打印本页]
作者:
陈圳
时间:
2013-2-5 14:52
标题:
关于判断结果if(...)else if(...)的疑问
本帖最后由 张向辉 于 2013-2-15 20:26 编辑
//习题3.4:计算n!的和 当n为2,4,6,8,10的结果;注0!=1;
class example3
{
public static void main(String[] args)
{
int sum=1;
for(int i=0;i<=10;i++)
{
if(i==0)
{
sum=1;
sop(i+"!="+sum);
}
if(i>0)
sum*=i;
else if(i%2==0)
sop(i+"!="+sum);
/*if(i>0)
{
sum*=i;
if(i%2==0)
sop(i+"!="+sum);
}*/
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
运行结果为:0!=1 0!=1
注释内的运行结果是正确的,疑问:if(....) else if(...)判断的原理不是上一个if(...)满足,然后执行下面一个if(...)语句吗?
如果是if(...)不满足才执行下一个if(...)语句的话,是不会输入结果:0!=1 0!=1
表示疑惑...
作者:
刘明杰
时间:
2013-2-5 15:15
pp.jpg
(31.65 KB, 下载次数: 85)
下载附件
2013-2-5 15:15 上传
在if-else if语句中,只有当上一个条件不成立时,才会进入下一个if语句并进行if语句后面的条件判断。一旦有一个if后面的条件为ture,则执行此if所带的语句(块),语句(块)执行完成后,程序跳出if-else if结构。 如果所有的if条件都不成立,则执行最后的else所带的语句,如果最后没有else语句,则什么都不执行。
作者:
黑马-小龙
时间:
2013-2-5 20:52
:if(....) else if(...)判断的原理,上一个判断为真的时候,下面不执行。
:if(....){} 没有else语句,判断的原理,如果if为真,执行下面的语句
作者:
黄玉昆
时间:
2013-2-5 21:17
你说的为什么结果只是:0!=1 0!=1呢?我测试了,我发现,你的程序中的if(i>0)sum*=i;一直在运行计算着,但是并没有打印。
你的程序是这么运行的:
i 执行条件 结果 注
i=0 if(i==0) sum=1; sum=1
sop(i+"!="+sum);
打印出0!=1
和
else if(i%2==0) sum=1
sop(i+"!="+sum);
打印出0!=1
i=1 if(i>0) sum *= i; sum=1但没打印 后面不不执行,i++后进行第二次循环
i=2到i=10 if(i>0) sum *= i; sum=n!但没打印 直到i=10,else if(i%2==0)都没执行,结果为10!=3628800
但是注意,出了for循环不能使用写这条语句sop(i+"!="+sum);,因为i是局部变量,只定义在了for循环内
你要是想打印n!和n分别为2,4,6,8,10的结果,我改了改你的代码:
class Example3
{
public static void main(String[] args)
{
int sum = 1;
int sum1 = 1;
int i = 0;
for(;i<=10;i++)
{
if(i==0)
sop(i+"!="+sum);
else
sum*=i;
if(i%2==0 & i!=0)
sum1*=i;
}
sop((i-1)+"!="+sum);
sop("n为2,4,6,8,10的结果:" + sum1);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
希望能对你有帮助。
作者:
朱玉玺
时间:
2013-2-5 21:56
图有点糙,不过应该能说明问题,道友明白否?
5.jpg
(89.43 KB, 下载次数: 63)
下载附件
2013-2-5 21:54 上传
作者:
dzr19850306
时间:
2013-2-5 22:45
if后面,你需要一个大括号把你想要执行的内容括号括起来,除非只有一条语句。
作者:
杨芳
时间:
2013-2-6 01:53
顶!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2