做题遇到的,求输出结果
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!。求指教

解决方案 »

  1.   

    switch里面如果没碰见break是继续往下执行的。i = 1时,执行System.out.println(c);  System.out.println(c); 然后才break后面同理。
      

  2.   

    case语句后面的整数值与整数表达式的返回值相等,会触发执行case后面所有的相关语句直到遇到一个break关键字为止。当i=1时,执行完c='b',并打印后,还执行了c='e',并打印,然后遇到break,结束这次switch.
    然后i=2,执行c='e',并输出。所以打印两个e.
    后面的!!,也是一样。所以最好把每个case后加一 break.
      

  3.   

    这样啊,我懂了,没碰到break是要继续往下执行。
      

  4.   


    有空看看switch的用法吧!
      

  5.   

        在switch语句中,每个语句之后都会存在一个break,表示退出整个switch()语句,如果不写上break语句,则所有的操作将在第一个满足条件之后的语句之后全部输出,直到遇到break为止。
         所以,使用switch语句时,必须加上break语句。