2015-04-06 76 views
0

我的任务是使用一个旧的实验室,我们创建了一个包围它的GUI,很简单..我没有问题创建GUI或继承变量来创建不同的对象,但一个对象在其参数中需要Enum类型,并且我似乎很难将枚举类型分配给对象,即使编译器没有抱怨,所以也许你们可以帮我解决问题。访问一个枚举类型通过继承来创建一个对象

public enum Department { 

    PAYROLL, PRODUCTION, ACCOUNTING, RESEARCH, MARKETING; 

    public static Department getRandomDepartment() { 
     Department[] d = Department.values(); 
     int size = Department.values().length; 

     return d[r.nextInt(size)]; 
    } 
}; 

有可以利用的赋值函数方法setDepartment,但我不知道如何进行实例化:包含枚举类

Manager类。

public void setDepartment(Department d) { 
    department = d; 
} 

我的继承人新增管理员方法在我的GUI类:

if(command.equals("Add Manager")){ 
     m_name = inputName.getText(); 
     m_num = inputNum.getText(); 
     m_year = Integer.parseInt(inputHire.getText()); 
     m_yearlyPay = Double.parseDouble(inputYearly.getText()); 


     if(inputDepartment.equals("Payroll") || inputDepartment.equals("payroll")){ 

      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.PAYROLL); 
      System.out.println(temp); 
     } 
     if(inputDepartment.equals("Production") || inputDepartment.equals("production")){ 
      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.PRODUCTION); 
      System.out.println(temp); 
     } 
     if(inputDepartment.equals("Accounting") || inputDepartment.equals("accounting")){ 
      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.ACCOUNTING); 
      System.out.println(temp); 
     } 
     if(inputDepartment.equals("Research") || inputDepartment.equals("research")){ 
      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.RESEARCH); 
      System.out.println(temp); 
     } 
     if(inputDepartment.equals("Marketing") || inputDepartment.equals("marketing")){ 
      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.MARKETING); 
      System.out.println(temp); 
     } 



    } 

那里有明显有毛病我的方法,因为当我输入通过GUI部门不承认该部门我补充说,我的下一步应该是什么想法?

+0

'f.equals( “富”)|| f.equals( “foo” 的)'可以改写为'f.equalsIgnoreCase( “富”) '(除非你想排除像''fOo''这样的病例。 – Pshemo

+0

伟大的小费生病记住这一点,谢谢! –

回答

1

枚举总是提供valueOf(String)静态工厂,可以帮助你,我认为任何输入。

Manager.Department.valueOf("PAYROLL")将返回一个Manager.Department.PAYROLL

0

我似乎已经解决了这一问题,并像往常一样的简单的东西,但多数民众赞成编码为你笑,

我忘了实例化一个字符串变量来充当GUI持有人所以当我输入的部门该字符串没有任何意义,所以它不认可该部门。

工作的代码现在是:

if(command.equals("Add Manager")){ 
     m_name = inputName.getText(); 
     m_num = inputNum.getText(); 
     m_year = Integer.parseInt(inputHire.getText()); 
     m_yearlyPay = Double.parseDouble(inputYearly.getText()); 
     department = inputDepartment.getText(); 


     if(department.equalsIgnoreCase("Payroll")){ 

      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.PAYROLL); 
      System.out.println(temp); 
     } 
     if(department.equalsIgnoreCase("Production")){ 
      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.PRODUCTION); 
      System.out.println(temp); 
     } 
     if(department.equalsIgnoreCase("Accounting")){ 
      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.ACCOUNTING); 
      System.out.println(temp); 
     } 
     if(department.equalsIgnoreCase("Research")){ 
      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.RESEARCH); 
      System.out.println(temp); 
     } 
     if(department.equalsIgnoreCase("Marketing")){ 
      Manager temp = new Manager(m_name,m_num,m_year,m_yearlyPay,Manager.Department.MARKETING); 
      System.out.println(temp); 
     } 



    } 

感谢这是提供