黑马程序员技术交流社区

标题: 大家帮忙看两个程序 [打印本页]

作者: xiaocai    时间: 2012-4-9 17:34
标题: 大家帮忙看两个程序
class Testque4 {
                public static void main(String[] args) {
                                int index = 0;
                                while (index <= 1000) {
                                                index = index + 5;//?????                                                                                                                                                                                                                                                               
                                                if (index == 400) {
                                                                continue;
                                                }       
                                                System.out.println("The index is " + index);
                                    
                                }
                }
}


class Testque3 {
                public static void main(String[] args) {
                                int index = 0;
                                while (index <= 1000) {
                                                                                                                                                                                                                                                                                                               
                                                if (index == 400) {
                                                                continue;
                                                }       
                                                System.out.println("The index is " + index);
                                                index = index + 5;//?????
                                }
                }
}
为什么第一个程序从5显示,跳过400,到1005结束;而第二个从0开始,到395结束??
作者: 邓海涛    时间: 2012-4-9 17:51
第一个程序当你每次满足while条件以后进入循环体,把index的值加上5赋值给index,所以每次打印的时候,index的值都会比进入循环刚开始的时候多5,if语句里面的条件是当index=400的时候就结束剩下的语句开始下一次循环,所以400被跳过,此时index的值应该是395,最后一次循环的时候index刚刚进入循环条件的时候是1000,进入循环体值增加了5,所以最后就是以1005打印结束
作者: 邓海涛    时间: 2012-4-9 17:54
第二个程序最后结束的时候打印的是确实是395,
作者: 黄或俊    时间: 2012-4-9 17:58
continue关键字——结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,因为也执行不到

作者: 邓海涛    时间: 2012-4-9 18:00
顺便补充下,continue语句可以强迫程序跳到循环的起始处,当程序运行到continue语句时,会停止运行剩余的循环主体,而是回到循环的开始处继续运行。
作者: 黑马-刘昌文    时间: 2012-4-9 18:12
第一个程序因为continue只会结束本次循环,当index=400时结束本次循环,即以后的代码都不会执行了,不会打印出400,接着再进入循环直到index=1000,执行index = index + 5,输出1005,再执行循环时就不满足条件了!
第二个程序当index=395时 ;打印出index=395,然后执行 index = index + 5,index=400,执行到  if (index == 400) {   continue;}      会跳出本次循环,再进入循环,重复执行上个操作,变成死循环!
                                                              
                                                   

作者: xiaocai    时间: 2012-4-9 19:21
对continue理解的还是不透彻,谢谢大家
作者: xiaocai    时间: 2012-4-9 19:22
对continue理解的还是不透彻,谢谢大家




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