2011-07-16 154 views
1

我有一個問題,從我的主傳遞一個枚舉值到我的一個類。我的程序存儲關於書呆子的信息:名字,nerdfactor。它有一系列的類和子類。我有一個超類,擴展到2個其他類和第三類,擴展到前面提到的子類中的1個。我的程序最後要做的是拿出諸如名字,書呆子之類的充滿爭論,而書呆子更喜歡WII,XBOX或PS3。貝婁是從我的主要和我的子類開始的剪輯。如果有人能幫我弄清楚如何通過列舉的論點,我會非常感激。通過枚舉參數

public static void main(String[] args) { 

    // List to keep a few nerds in 
    ArrayList<GenericNerd> nerdList = new ArrayList(10); 
    GenericNerd nerd = new GenericNerd("Bugger McNosePicker", 9); 
    nerdList.add(nerd); 

    nerd = new ConsoleGeek("Freddy where's my mommy", 9, WII); // the WII should be an enum value 
    nerdList.add(nerd); 
} 

子類ConsoleGeek

public class ConsoleGeek extends GenericNerd { 

    enum ConsoleType { 

     WII, PS3, XBOX 
    }; 
    private ConsoleType console; 

    public void setConsoleType(ConsoleType console) { 
     this.console = console; 
    } 
    public ConsoleType getConsoleType(){ 
    return console; 
} 


public ConsoleGeek(String name, int nerdFactor, ConsoleType console) { 
    super(name, nerdFactor); 
    if (name == null) { 
     System.out.println("Error: GenericNerd constructor - name is null!"); 
     System.exit(1); 
    } 
     // the setNerdFactor method handles parameter range checking 
    setNerdFactor(nerdFactor); 

    this.name = name; 
    if (console == ConsoleType.WII) { 

     // make sure WII players nerd factor is less than 6! 
     if (nerdFactor > 5) { 
      System.out.println("Warning: " + name 
        + " Prefers WII! (setting nerdFactor to 5)."); 
      setNerdFactor(5); 
     } 
     // Make sure XBOX players nerd factor is between 3 and 8 
    } else if (console == ConsoleType.XBOX) { 
     if (nerdFactor < 3 || nerdFactor > 8) { 
      System.out.println("Warning: " + name 
        + " Prefers XBOX! (setting nerdFactor to 8)."); 
      setNerdFactor(8); 
     } 

    } 
} 

我想過做一個新型的書呆子像

ConsoleGeek supergeek = new ConsoleGeek(arguments) 

的想法,但我敢肯定它應該留在其他格式。

回答

2
nerd = new ConsoleGeek("Freddy where's my mommy", 9, ConsoleGeek.ConsoleType.WII);