public class Text3_2
{  public static void main(String args[])
   {  char c='\0';
       for(int i=1;i<=4;i++)
       {  switch(i)
           {  case 1:c='b';
                     System.out.print(c);
              case 2:c='e';
                     System.out.print(c);
                     break;
              case 3:c='p';
                     System.out.print(c);
              default:System.out.print("!");
           }
       }
   }
}运行结果是beep!
为什么会有两个e呢?不是有break么?
麻烦高人解释下啦,我是初学者……谢谢啦!

解决方案 »

  1.   

    public class Text
    { public static void main(String args[])
      { char c='\0';
      for(int i=1;i<=4;i++)
      { switch(i)
      { case 1:c='b';
      System.out.print(c);
      break;
      case 2:c='e';
      System.out.print(c);
      break;
      case 3:c='p';
      System.out.print(c);
      default:System.out.print("!");
      }
      }
      }
    }
      

  2.   

    case 1:c='b';
    System.out.print(c);
    break;//here
      

  3.   

    { case 1:c='b';
      System.out.print(c);
      //你这里之间没有break, 所以i=1的时候是打印出 b e 的
      break; //加一个
      case 2:c='e';
      

  4.   

    嗯,懂了为什么有两个e了!
    上面我打错了,  运行结果是beep!!
    那两个感叹号和这个也是同一个原因么?
      

  5.   

    这叫case穿透,i=1的时候case 1和case 2都会执行,因为case 1没有break
      

  6.   

    是的。自己加一个break就知道的了
      

  7.   

    switch是检测入口不检测出口的,也就是说,进入switch后会一直走到底,switch检测的只是进入的位置。这就是为什么要加break的原因。你的程序少了两个break。
      

  8.   


    结果是beep!!现在清楚答案是怎么来的了!
    谢谢大家~