public class Sprite 
{
public enum Dogs {collie, harrier};
public static void main(String [] args) 
{
Dogs myDog = Dogs.collie;
switch (myDog) 
{
case collie:
System.out.println("collie ");
case harrier:
System.out.println("harrier ");
 
}
}
}
What is the result?
A. collie
Copyright Tarena Corporation,2008.All rights reserved
B. harrier
C. Compilation fails.
D. collie harrier
E. An exception is thrown at runtime.

解决方案 »

  1.   

    编译了一下  结果答案是D,  生成3个.class文件Sprite$1.class、Sprite$Dogs.class、Sprite.class ,枚举的我也不太懂 看来我要补补基础了 呵呵
      

  2.   

    D ...应为你没有break...所以只要找到一个匹配的后..后面所有都会执行..只到遇到break
      

  3.   

    char a = '2';
    switch (a) {
      case '1':
     System.out.println("1 ");
      case '2':
     System.out.println("2 ");
                }
    那为什么这个却输出2,而不是 1 2???
      

  4.   

    只要满足case的条件,就会执行case后面以及后面所有的case的语句,除非遇到break
    char a = '2'; 
    switch (a) { 
    case '1': 
    System.out.println("1 "); 
    case '2': 
    System.out.println("2 "); 
                }
    这个输出是2是因为 首先判断条件,a!=1,所以跳过第一个case,到第二个case匹配成功,就打印2
    如果你在后面加一句变成
    char a = '2'; 
    switch (a) { 
    case '1': 
    System.out.println("1 "); 
    case '2': 
    System.out.println("2 "); 
    case '3':
    System.out.println("3");            

    那么结果就是2 3  如果变成这样
    switch (a) { 
    case '1': 
    System.out.println("1 "); 
    break;
    case '2': 
    System.out.println("2 "); 
    break;
    case '3':
    System.out.println("3");
    break;            

    那么结果也还是2
      

  5.   

    这题要改成这样的话,就比较“面向对象”了,呵呵。public class EnumTest {    public enum Dogs {
            collie, harrier
        };    public static void main(String[] args) {
            Dogs myDog = Dogs.collie;
            System.out.println(String.valueOf(myDog));
        }
    }
      

  6.   

    汗  楼主原来是要问 switch的用法啊  汗  会意错了