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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑黑黑马 中级黑马   /  2014-3-14 10:08  /  1514 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑黑黑马 于 2014-3-14 17:52 编辑

int k=1;
                int counts=0;
                while(k<=100)
                {
                  if(k==30)
                        {
                      //break;
                          continue;
                        }
                        
                        counts++;
                        k++;
                }
                System.out.println(counts);
用break可以,为什么用continue就不行了?

7 个回复

倒序浏览
你用break直接跳出了循环,去打印这个counts的值了,用了continue的话,直接开始进行下一次循环了,也就是当k==30的时候呢,continue了,while循环判断k<=100,然后又是k==30,continue,然后就死循环了。
回复 使用道具 举报
break是结束整个循环体,continue是结束单次循环
看了这二个例子,或许你就懂了
使用break
while(x++ < 10)
{
    if(x == 3)
    {
        break;
    }
    printf("%d\r\n", x);
}
结果是输出  1 2   就退出了整个while循环

但是如果使用continue
while(x++ < 10)
{
    if(x == 3)
    {
        continue;
    }
    printf("%d\r\n", x);
}
结果是:1 2 4 5 6 7 8 9 10  可见他仅仅是不输出3,因为他结束了本次循环
回复 使用道具 举报
在一具循环体中,如果用break返回, 则不管其后面是否有满足for中条件的情况,都不做for中的循环体,即不会做;
如果用continue返回,如果条件满足执行continue, 跳出下面语句的执行,而返回到for 语句的开头,再次判断for中的条件,从而根据条件执行其中的循环体内容.
  1. 简单地说,比如这样一个程序:
  2. for(...) {
  3. ...
  4. continue/break;
  5. ...
  6. }
  7. System.out.prinln("a");
复制代码

continue表示立即去执行“for(...)”这行代码,break表示立即去执行“System.out.prinln("a");”这行代码。
  1. public class BreakTest {
  2.     public static void main(String args[]) {
  3.         System.out.println("循环没有开始");

  4.         System.out.println("现在开始测试continue");
  5.         for (int i = 0; i < 3; i++) {
  6.             System.out.println("开始第" + i + "次for循环");
  7.             if (i == 1) {
  8.                 continue;
  9.             }
  10.             System.out.println("看看continue后这里执行了吗?");
  11.         }
  12.         System.out.println("continue测试完毕\n***********************");

  13.         System.out.println("现在开始测试break");
  14.         for (int i = 0; i < 3; i++) {
  15.             System.out.println("开始第" + i + "次for循环");
  16.             if (i == 1){
  17.                 break;
  18.             }

  19.             System.out.println("看看break后这里执行了吗?");
  20.         }
  21.         System.out.println("break测试完毕\n***********************");
  22.     }
  23. }
复制代码
回复 使用道具 举报
break是中断当前正在运行的循环,而continue是马上开始下一次循环,你的++写到上面判断就不会是死循环了
回复 使用道具 举报
房建斌 发表于 2014-3-14 10:24
你用break直接跳出了循环,去打印这个counts的值了,用了continue的话,直接开始进行下一次循环了,也就是 ...

不好意思,没看懂,continue之后应该是不执行30这一次了,跳出后k++不是31,然后不能继续执行吗?
回复 使用道具 举报
黑黑黑马 发表于 2014-3-14 16:55
不好意思,没看懂,continue之后应该是不执行30这一次了,跳出后k++不是31,然后不能继续执行吗? ...

当k==30,并不是跳出循环了,而是继续下一次循环,所以cotinue后面的代码不会执行的,
  1.         public static void main(String[] args) {
  2.                 int k=1;
  3.         int counts=0;
  4.         while(k<=100)
  5.         {
  6.           if(k==30)
  7.                {
  8.                           System.out.println(counts++);//把counts放到这里
  9.                   continue; //当k==30执行到这句,后面的语句就不执行了,直接到了while(k<=100),k一直等于30.不会往下走了。死循环。
  10.                 }
  11.                
  12.                 counts++;
  13.                 k++;
  14.         }
  15.         System.out.println(counts);
  16.                
  17.         }
复制代码

评分

参与人数 1黑马币 +15 收起 理由
黑黑黑马 + 15 谢谢。理解了

查看全部评分

回复 使用道具 举报
daoyua 中级黑马 2014-3-14 17:02:00
8#
continue不会执行循环下面的语句了,会重新开始下一次循环,但是你的k还是30,还会进入判断,还会contine,死循环了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马