黑马程序员技术交流社区

标题: continue——循环跳不出去? [打印本页]

作者: 黄珍    时间: 2012-4-8 10:22
标题: continue——循环跳不出去?
int i = 0;
int sum=0;
while(i<=100)
{
    if(i%11==0) {continue;}
    i++;   sum+=i;
}
作者: 赵潮江    时间: 2012-4-8 10:34
continue是进入下一步,而不是跳出整个循环。
在你的程序中表现为:
一开始i是0,判断成立,continue之后,直接进入第二个循环,i还是0,如此无限循环

作者: 赵潮江    时间: 2012-4-8 10:39
本帖最后由 赵潮江 于 2012-4-8 10:40 编辑

如果你这个程序段的意思是遇到能被11整除的sum就不累加
则可以改为:
int i = 0;
int sum=0;
while(i<=100)
{
    if(i%11==0) {i++;continue;}
    i++;   sum+=i;
}
作者: 余晓亮    时间: 2012-4-8 10:53
int sum = 0;
            for (int i = 0; i <= 100; i++)
            {
                if (i % 11 == 0)
                {
                    continue;
                }
                else
                {
                    sum += i;
                }
            }
作者: 吴永飞    时间: 2012-4-8 11:04
continue是跳出本次循环,进入下次循环
你这样写
int i = 0;
int sum=0;
while(i<=100)
{
     if(i%11==0) {continue;}
     i++;   sum+=i;
}
代码每次执行到continue就跳出本次循环,i永远等于1这样写是不正确的
作者: 刘真    时间: 2012-4-8 11:11
continue 语句将控制权传递给它所在的封闭迭代语句的下一次迭代。
continue语句和break语句相似。所不同的是,它不是退出一个循环,而是开始循环的一次新迭代。

int i = 0;
            int sum = 0;
            for (i = 0; i <= 100; i++)
            {  //当i是11的倍数时,跳出正在执行的循环,而不执行 for 循环体末尾之间的语句
                if (i % 11 == 0)
                {
                    continue;
                }
                sum += i;
                Console.WriteLine("i={0},sum={1}", i, sum);
            }
            
            Console.ReadKey();
作者: 包连靖    时间: 2012-4-8 11:14
continue不是跳出循环
break才是
作者: 刘冬晓    时间: 2012-4-8 11:57
本帖最后由 刘冬晓 于 2012-4-8 12:00 编辑

如果是想跳出本次循环的话,就在if语句中写入i++,因为只有这样i的值才会改变,否则就一直是满足条件的那个数;如果是想跳出整个循环的话,就用break。
作者: 黄国钢    时间: 2012-4-8 12:33
continue是进入下一次循环,不执行continue下面的代码。

int i = 0;
int sum=0;
while(i<=100)
{
    if(i%11==0) {continue;} //当循环到i=11时,i%11==0 表达式为true,执行continue进入下一个循环
     i++;   sum+=i;              //这个时候i++就没执行,i 任然是11,因此下一次循环还会执行continue,这样造成了死循环。
}
作者: ★心秒★    时间: 2012-4-8 13:12
continue不是跳出整个循环用的!! 要跳出整个循环用break;  continue是用来结束当前循环,不在执行continue之后的语句。进行下一步循环用的!!! 而不是像break一样跳出整个循环,是有区别的!   
作者: 马跃    时间: 2012-4-11 21:20
用一下break即可……
continue仅能结束单次循环.
作者: 非常小可    时间: 2012-4-12 19:43
contioue 是跳出本次循环,进行下一次循环,你这个跳不出去是因为i求余一直等于11条件一直成立当然跳不出去
如果在continue之前i自增一下,就可以跳出了;
break;是终止整个main函数;只要执行到这一步就可以跳出整个函数
作者: 郑森    时间: 2012-4-13 20:00
contioue 是继续执行的意思,break才是跳出循环,n你这弄成死循环去了。
作者: 陈世伟    时间: 2012-4-15 11:33
肯定跳不出去,i++没有被执行,满足i%11==0这个条件,就直接进行下一次循环,但是i的值一直没有变,所以变成了死循环.
作者: pray    时间: 2014-4-26 05:18
真乃神人啊!楼主的帖子实在是光彩夺目。子曰:三人行而必有我师焉。斯言善哉。不知不觉上网这么多年,好的坏的PP都看过了,看多了。渐渐的也觉得没什么意思了。渐渐觉得自己已经达到奋斗的顶峰了。可是,第一眼看到楼主浅笑嫣然的时候,我的眼前竟然感觉一亮!仿佛看到了倾城倾国的美人,正轻摇柳步款款而行。正好似楼主的外表,相貌端正,天庭饱满。好片啊!只有那种真理在握,洞视这个世界真实本质的人,才能显示出这样惊人的魅力。在日益苍白肤浅的网络里,我从楼主的PP中不但看到了美丽,更加看到了网络的希望。为表达我对楼主的敬意,也是为了向楼主学习。我决心要把这个帖子顶上去!




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