public class Switch3 { /**
 * @param args
 */
final static short x=2; public static void main(String[] args) {

//final static short x=2;

for(int z=0;z<3;z++){

switch(z){

case x:
System.out.println(0);

case x-1:
System.out.println(1);

case x-2:
System.out.println(2);

}
} }}
答案是212012谁能解释下为什么?谢谢

解决方案 »

  1.   

    case break 啊,
    你少了break语句。
    应该在每条打印语句后面加 break;
      

  2.   

    少了break的话,case成立后,会执行下面所有的case语句,如你这题:第一次z=0,所有只输出一条语句:2,z=1时,case x-1成立,输出1,这里因为没有break,所有下一条case也会输出,依次累推~~~
      

  3.   

    呵呵,缺少break的问题,2,3楼解释的不错。
      

  4.   

    我也是初学者,如果有错楼主见谅:
    首先 定义了一个全局常量final static short x=2; 
    然后是循环for(int z=0;z <3;z++){
    首先第一次循环这时为0
    执行代码case x-2: 
    System.out.println(2); 原因是x是2,2-2 = 0所以执行这句,其它的一样就一样了,因为没有break所以下条语句会打印1 2,在执行一次循环执行0 1 2