A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
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);
        }
}

最佳答案

查看完整内容

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

18 个回复

倒序浏览
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单步运行,就能观察到死循环的现象了。
回复 使用道具 举报
坐等解释啊
回复 使用道具 举报
楼上说的对。
回复 使用道具 举报
嗯,是这样的……
回复 使用道具 举报
Tony丶Just 发表于 2014-9-19 09:47
嗯,是这样的……

我也不懂,受教了!
回复 使用道具 举报
高泳 中级黑马 2014-9-20 12:58:59
7#
进来看看,受教了。
回复 使用道具 举报
没有else,x值永远为1,是个死循环
回复 使用道具 举报
楼上说的对。
回复 使用道具 举报
应该把else 去掉
回复 使用道具 举报
这个不是很简单吗?x的值不变,肯定不会跳出循环的,一直死循环下去,永远不会输出!
回复 使用道具 举报
主要是当x自增到7的时候,将一直执行的是if语句中的内容不再执行else的自增运算,形成死循环,如果没有else的话无论是否执行语句都得执行自增运算
回复 使用道具 举报
cherry@cookie 来自手机 中级黑马 2014-9-26 08:04:22
13#
一楼正解。
回复 使用道具 举报
来晚了{:3_46:}
回复 使用道具 举报
把else去掉就可以了,因为满足if条件,就不会执行else下的语句了
回复 使用道具 举报
没有对NUM进行限制  程序成为死循环  可以在while中 用 | 连接 x 和num 的表达式 进行条件限制  
回复 使用道具 举报
郑飞 高级黑马 2014-10-21 11:25:57
17#
程序存在运行不到的语句,要不控制while 成有限循环要不就是去掉实现不到的那些代码。
回复 使用道具 举报
李票 中级黑马 2014-12-28 16:55:32
18#
这个问题很容易解释,if-else出现的时候,两者只能取得一个数值结果,要么是if中的要么是else中的
回复 使用道具 举报
不错,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马