switch  ( j ) { 
case  2: 
System.out.println("Value is two.  "+j); //这里没有break,会继续执行下面的语句,直到遇到break才会跳出switch
case  2+1 : 
System.out.println("Value is three.  "+j); 
break; switch  ( j ) { 
case  2+1 : //如果j==3才会执行
System.out.println("Value is three.  "+j); 
break; 
default: //因为上面没有满足的条件,所以执行default
System.out.println("value  is "+j); 
break; 
}

解决方案 »

  1.   

    case  2:
    System.out.println("Value is two.  "+j);
    case  2+1 : 你这两个case之间没有break, 当然就都顺序执行下来了. 
      

  2.   

    正解,第1个程序中的条件式,相当于
    case  2: 
    System.out.println("Value is two.  "+j); System.out.println("Value is three.  "+j); 
    break; 
    所以会输出Value is three.  2 
    第二个程序中的条件式
    switch  ( j ) { 
    case  2+1 : 
    System.out.println("Value is three.  "+j); 
    break; switch中的括号放置你要取出数值的变量,取出数值之后程序会开始与CASE中的所设置的数字作比较,如果符合就执行其中的语句,显然你的2+1不在变量J值范围,所以不执行CASE2+1后面的语句,接着遇到break后离开switch程序块,如果没有符合的数值或字符,则会执行default后面的语句,所以下面的程序输出的结果是value  is 2