public class EnumTest {
public static void main(String agrs[]){
Scanner in=new Scanner(System.in);
System.out.print("Enter a size:(SMALL,MEDIUM,LARGE,EXTAR_LARGE)");
String input=in.next().toUpperCase();
Size size=Enum.valueOf(Size.class,input);
System.out.print("size="+size);
System.out.print("abbreviation="+size.getAbbreviation());
if (size==Size.EXTAR_LARGE)
System.out.print("Good job--you paid attention to the_.");
}
}
enum Size{
SMALL("S"),MEDIUM("M"),LARGE("L"),EXTAR_LARGE("XL");

private Size(String abbreviation){
this.abbreviation=abbreviation;
}

public String getAbbreviation(){
return abbreviation;
} private String abbreviation;
}
这段代码的输出结果是:Enter a size:(SMALL,MEDIUM,LARGE,EXTAR_LARGE)。它下面好几个输出语句没有执行。这是什么原因呢?请帮忙解释一下!

解决方案 »

  1.   

    这要看你输入的是什么,
    如果是S或M,L,XL会报IllegalArgumentException 
    如果输入SMALL或MEDIUM,LARGE,EXTAR_LARGE运行正常
      

  2.   

    import java.util.Scanner;
    public class EnumTest { 
    public static void main(String agrs[]){ 
    Scanner in=new Scanner(System.in); 
    System.out.print("Enter a size:(SMALL,MEDIUM,LARGE,EXTAR_LARGE)"); 
    String input=in.next().toUpperCase(); 
    Size size=Enum.valueOf(Size.class,input); System.out.print("size="+size); 
    System.out.print("abbreviation="+size.getAbbreviation()); 
    if (size==Size.EXTAR_LARGE) 
    System.out.print("Good job--you paid attention to the_.Size.EXTAR_LARGE"); else if(size==Size.LARGE){
    System.out.print("Good job--you paid attention to the_.Size.LARGE"); 
    }
    else if(size==Size.SMALL){
    System.out.print("Good job--you paid attention to the_.Size.SMALL"+Size.SMALL); 
    }

    }
    enum Size{ 
    SMALL("S"),MEDIUM("M"),LARGE("L"),EXTAR_LARGE("XL"); private Size(String abbreviation){ 
    this.abbreviation=abbreviation; 
    } public String getAbbreviation(){ 
    return abbreviation; 
    } private String abbreviation; 
    } 运行:Enter a size:(SMALL,MEDIUM,LARGE,EXTAR_LARGE)
    small(自己输入)
    size=SMALLabbreviation=SGood job--you paid attention to the_.Size.SMALLSMALL