for(int i=1;i<=100;i++)
    {
        switch(i)
        {
            case 6:
                System.out.println(i);
            case 66:
                System.out.println(i);
            case 96:
                System.out.println(i);
        }
    }去掉break后,结果为
6
6
6
66
66
96
为什么6会出现3次其他2次,代码在C++里运行结果正好相反96出现3次其他2次。
break的作用不就是找到一个结果,就不用浪费时间再执行下面的代码,因为下面的代码肯定对不到了。为什么6会有3次相等呢?

解决方案 »

  1.   

    没有break/return/throw的话,switch会跑到第一个case,然后后面的case也会进去i = 6
    case 6: 
    case 66:
    case 96:
    3个print都执行了i = 66:
    case 66:
    case 96:
    这两个都执行了你换一下case顺序,仍旧不加break,再试一下,就会更清楚
      

  2.   


      int i = 6;
           switch (i) {
    case 6:
    System.out.println(i);
    case 66:
    System.out.println(i);
    case 96:
    System.out.println(i);
    }
      

  3.   

    关于C++的问题,不是特别清楚
    反正java的代码相当于goto ":label" + i;:label6
    System.out.println(i);
    // break相当于goto breakEnd;
    :label66
    System.out.println(i);
    :label96
    System.out.println(i);
    :switchEnd
      

  4.   

    后面都加break就ok了。哈哈!!!!
      

  5.   

    一个值匹配成功后,下边的case不判断,直接执行。
      

  6.   

    第一个进来是 i=6;
    三次的打印  System.out.println(i); 都是 6第二次是 66;
    第一个System.out.println(i)不执行,因为case i的值=6;
    所以 向下执行两次; i=66;第三次 类似。 i=99输出,因为它满足最后一个条件。如果去掉break,所有的case都会进去,都会访问到。
    如果break保留,遇到break就出来了,不会向下访问
      

  7.   

    首先会找到符合的case,如果没有break的话,后面的case会继续执行到switch结束。
    i = 6
    case 6:  
    case 66:
    case 96:
    3个print都执行了i = 66:
    case 66:
    case 96:
    这两个都执行了i=96:
    case 96:
    结束
      

  8.   

    break的作用不就是找到一个结果,就不用浪费时间再执行下面的代码,因为下面的代码肯定对不到了。为什么6会有3次相等呢?执行结果是对的 
    break的作用不仅仅是为了节省时间,你用不用break 以下case都不会再去判断
    如果不用break 会顺序执行结构内除case语句意外的其他语句
    如果用了break 程序会在遇到break 时 跳出该结构 break 以下的语句本次将不再执行
      

  9.   

    break的作用不仅仅是为了节省时间,你用不用break 以下case都不会再去判断(有一个分支匹配上,就不会再去匹配其他分支,以下case都会忽略掉,但只要不跳出结构,case以外的其他语句依然会执行)
    如果不用break 会顺序执行结构内除case语句以外的其他语句
    如果用了break 程序会在遇到break 时 跳出该结构 break 以下的语句本次将不再执行
      

  10.   

    没有break,就不会退出,会继续执行下面代码啊,所以就这样了啊!!!
      

  11.   

    首先会找到符合的case,如果没有break的话,后面的case会继续执行到switch结束。
      

  12.   

    for(int i=1;i<=100;i++)
      {
      switch(i)
      {
      case 6:
      System.out.println(i);
      case 66:
      System.out.println(i);
      case 96:
      System.out.println(i);
      }
      }
    楼主搞错了吧..在JAVA和C++里执行结果是一样的..都是
    6
    6
    6
    66
    66
    96