黑马程序员技术交流社区

标题: 为什么没有else就能运行出结果,有就没有结果。编译无错误 [打印本页]

作者: 18643448863    时间: 2014-9-18 23:40
标题: 为什么没有else就能运行出结果,有就没有结果。编译无错误
class qiuhe7
{
        public static void main (String[] args)
        {
                int num=0,x=1;
                while(x<=100)
                        {
                                if(x%7==0)
                                        num=num+x;
                                else x++;
                        }
                          System.out.println(num);
        }
}

作者: clevergump    时间: 2014-9-18 23:40
1.  添加else时:只有if条件不满足时才会执行x++的操作。当x增加到值为7时,满足 x%7==0的条件,这样就不执行else里的x++,本次结束后 x==7不变;然后再次进入循环,还是执行if代码块同时x的值依然为7进入下一次循环。。。这样x的值将一直为7,而只有num的值在变化(每次加7),循环就会一直执行下去成为死循环,所以就无法执行输出语句,也就无法看到输出结果了。
2.  未添加else时,不论if条件是否满足都会执行x++的操作。这样就避免了前面提到的死循环,输出语句也就能顺利执行了。

其实可以通过使用Eclipse等软件的Debug单步运行,就能观察到死循环的现象了。
作者: 18643448863    时间: 2014-9-18 23:45
坐等解释啊
作者: yingsun    时间: 2014-9-19 02:20
楼上说的对。
作者: Tony丶Just    时间: 2014-9-19 09:47
嗯,是这样的……
作者: 风轻扬    时间: 2014-9-19 16:53
Tony丶Just 发表于 2014-9-19 09:47
嗯,是这样的……

我也不懂,受教了!
作者: 高泳    时间: 2014-9-20 12:58
进来看看,受教了。
作者: 张丽丹    时间: 2014-9-22 12:47
没有else,x值永远为1,是个死循环
作者: yueyazhishang    时间: 2014-9-22 14:13
楼上说的对。
作者: 荣英洁    时间: 2014-9-23 19:32
应该把else 去掉
作者: lwj123    时间: 2014-9-24 16:26
这个不是很简单吗?x的值不变,肯定不会跳出循环的,一直死循环下去,永远不会输出!
作者: xizhiqiang    时间: 2014-9-24 23:49
主要是当x自增到7的时候,将一直执行的是if语句中的内容不再执行else的自增运算,形成死循环,如果没有else的话无论是否执行语句都得执行自增运算
作者: cherry@cookie    时间: 2014-9-26 08:04
一楼正解。
作者: 小刺风    时间: 2014-9-26 19:07
来晚了{:3_46:}
作者: 14年7月想去it    时间: 2014-10-7 16:40
把else去掉就可以了,因为满足if条件,就不会执行else下的语句了
作者: 紫缘ぶ逸影    时间: 2014-10-10 10:52
没有对NUM进行限制  程序成为死循环  可以在while中 用 | 连接 x 和num 的表达式 进行条件限制  
作者: 郑飞    时间: 2014-10-21 11:25
程序存在运行不到的语句,要不控制while 成有限循环要不就是去掉实现不到的那些代码。
作者: 李票    时间: 2014-12-28 16:55
这个问题很容易解释,if-else出现的时候,两者只能取得一个数值结果,要么是if中的要么是else中的
作者: 致逝去的青春    时间: 2015-3-15 13:40
不错,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2