java - 使用 Java 实现枚举工资单

标签 java enums

抱歉,只是为了准备 Java 考试而尝试做一道过去的考试题,希望有人能告诉我我的答案是否正确。问题:

使用 Java 枚举,实现一个用于工资单计算的类。类中的常量对应于一周中的正常日期:星期一、星期二...星期五、周末:星期六和星期日以及银行假日,这是一周中的特殊节日。

该类应提供一个实例方法double pay (double time, double payrate),它返回当天工作的员工的总工资。计算规则如下:

给定日期的工资

base pay = pay rate * hours worked.

在这里,基本工资由下式给出:

base pay = pay rate * hours worked

当天的加类费由

overtime pay = pay rate * overtime hours/2

加类时间视日期而定。

正常工作日:对于正常工作日,加类时间是指当天超过 8 小时的工作时间。

周末:对于周末,加类时间是当天工作的时间。

银行假日:对于银行假日,加类时间是当天工作时间的 1.5 倍。

确保您的类是可维护的。应该可以在不破坏现有代码的情况下添加和删除。提示:使用策略枚举模式实现您的类。

public class Payroll {
   public enum Day {
      MONDAY, TUESDAY, WEDNESDAY,THURSDAY, FRIDAY, SATURDAY, SUNDAY, BANK HOLIDAY;
   }

   public double pay( double time, double payrate ) {
      if ( day
   }



}

我真的不知道下一步该去哪里,有人能帮我解决这个问题吗?

最佳答案

有提示要求策略枚举模式。这是一个起点:

 public enum Day {
    MONDAY(Type.NORMAL), TUESDAY(Type.NORMAL), WEDNESDAY(Type.NORMAL), 
    THURSDAY(Type.NORMAL), FRIDAY(Type.NORMAL), SATURDAY(Type.WEEKEND),
    SUNDAY(Type.WEEKEND), BANK_HOLIDAY(Type.BANK_HOLIDAY);

    private Type type;                         // <- the strategy
    private Day(Type type) {this.type=type;}

    public double pay(double time, double payRate) {
       // calculate the pay using the strategy: type.overtimePay(hours, payRate)
    }

    private enum Type {
      NORMAL {
         @Override
         double overtimePay(double hours, double payRate) {
            // TODO: implement
         }
      }
      // same for WEEKEND and BANK_HOLIDAY

      abstract double overtimePay(double hours, double payRate);
    }
 }

所以现在,如果你想计算工资,应该可以用

 double pay = Day.MONDAY.pay(10.5, 16.50);

或使用方便的(尚未实现的方法):

 double pay = getDay(aDate).pay(10.5, 16.50);  // getDay returns a Day enum

关于java - 使用 Java 实现枚举工资单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6046080/

相关文章:

java - 如何在 Hibernate @Entity 类中使​​用 Enum 成员?

java - 如何使用相同的键将枚举映射到枚举

java - CSVWriter不会将ArrayList转换为Array

java - 如何使用 JPA 延迟加载实体属性

java - 从 SmartGWT 部署外部的目录访问本地文件?

java - 从非 Activity 类获取资源

python - Ubuntu 16.04,Python 2.7 - 导入错误 : No module named enum

Java 反射 : create a instance using params from a treemap like python

java - 解码简单的 XML

Java枚举函数返回值