public class SwitchTest { 
  public static void main (String []args)  {
    System.out.println (switchIt(4)); 
  }
  public static int switchIt(int x)  {
     int j = 1; 
     switch (x) { 
      case 1: j++; 
      case 2: j++; 
      case 3: j++; 
      case 4: j++; 
      case 5: j++; 
      default:j++; 
    }
    return j + x; 
  }
  } 
这段代码中,得到的结果为什么会是8呢,thanks

解决方案 »

  1.   

    因为case里面你没有加break;所以case 4、5、default都会执行!
      

  2.   

    额  你没个case 后面不加break啊
      

  3.   

    我也搞不明白了
    x = 4, 不等于 5 ,不符合case5呀,为啥还执行 case 5 和后面的呀
      

  4.   

    +1  你debug一下就知道了
      

  5.   

    没有跳出switch一直在执行啊都加起来了
      

  6.   

    自己多写几个试试就知道了,实在不行在每个case后输出一下,看看对应的值
      

  7.   

    执行完case 4的时候j的值是2,
    执行完case 5的时候j的值是3,
    执行完defaulat的时候j的值是4,
    所以返回值是4+4=8
      

  8.   

    没有break程序会顺序往下走,j被加了3次为4,4+4=8
      

  9.   

    正常来说.switch格式应该是每个case结尾都有break作为结束,如果没有就会先匹配case后的数字,只要匹配到就会执行后面的全部代码。
      

  10.   

    没有加break 后面不符合的也会按顺序执行下去
      

  11.   

    要break;不break后面的代码继续执行 到switch结束j的值是7 在加1就是8
      

  12.   

    设置个断点,点debug按钮,一步一步调试
      

  13.   

    break;跳出来就不加了多做switch练习
      

  14.   


    4 入口  +1 +1 +1  +4  就是这样的  没break http://www.happyalaric.com alaric原创技术博客