class a
{
public static void main(String[] args) 
{
System.out.println("value ="+ 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?另外还想问一下,  private Class{},发现任何时题都不能通过编译,这是什么原因呢?

解决方案 »

  1.   

    class只能用public,abstact,final修饰
      

  2.   

    caesarx(恺撒) ( ) 信誉:100    Blog  2006-11-26 16:08:20  得分: 0  
     
     
       每个j++后面再加一个break;
      
     
      

  3.   

    因为没有break ,case 4: j++;时,J=2,继续执行case 5: j++;J=3; default: j++; J=4
    return j + x; 4+4=8,故返回8
      

  4.   

    caesarx(恺撒) 正解,如果没有break的话 ,程序找到一个入口就一直往下执行,知道switch结束.
      

  5.   

    对于chenyifei211()兄的回答,更正一点,可能意思一样
    因为你传进去时x=4,所以从case 4开始执行。j值变化如下:
    case 4 :j++时,j=1
    case5 : j++时,j=2
    dfault:j++时,j = 3
    执行
    return j+x 时j = 4。所以是4+4 = 8
      

  6.   

    在case后面如果不加break那么他就会继续执行下面的case