日期:2014-05-20  浏览次数:20544 次

新人首发求指教
做题遇到的,求输出结果
public class E {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
char c='\0';
for(int i=1;i<=4;i++)
{
switch(i)
{
case 1: c='b';
System.out.println(c);
case 2: c='e';
System.out.println(c);
break;
case 3: c='p';
System.out.println(c);
default: System.out.println("!");
}
}
}

}
这样一个程序,答案是beep!!,按照我的理解得出的答案是bep!。求指教

------解决方案--------------------
switch里面如果没碰见break是继续往下执行的。

i = 1时,执行System.out.println(c); System.out.println(c); 然后才break

后面同理。
------解决方案--------------------
case语句后面的整数值与整数表达式的返回值相等,会触发执行case后面所有的相关语句直到遇到一个break关键字为止。

当i=1时,执行完c='b',并打印后,还执行了c='e',并打印,然后遇到break,结束这次switch.
然后i=2,执行c='e',并输出。所以打印两个e.
后面的!!,也是一样。

所以最好把每个case后加一 break.