所以我有这个映射,它有一个员工的名字和他们的代金券金额,作为它的键和值。
现在,我希望在每个新月的第一天将一个特定的金额添加到值中。
我有一个可以做到这一点的工作代码,但我正在寻找一种方法来使其更好
import java.time.LocalDateTime;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class VoucherManager {
private static double newVoucher = 2500.00;
private Map<String, Double> employeeVoucher = new TreeMap<>();
private LocalDateTime now = LocalDateTime.now();
public static VoucherManager getInstance() {
return new VoucherManager();
}
public void incrementVoucher() {
employeeVoucher.put("Olatunji Oniyide", 200.00);
employeeVoucher.put("Andrew Mbata", 500.00);
employeeVoucher.put("Opeyemi Oniyide", 700.00);
Set<Map.Entry<String, Double>> set = employeeVoucher.entrySet();
int day = now.getDayOfMonth();
if((day == 1) || (day == 2)) {
for(Map.Entry<String, Double> map : set)
System.out.println(map.getKey() + ":" + (map.getValue() + newVoucher));
} else {
throw new AssertionError();
}
}
public static void main(String[] args) {
VoucherManager voucher = VoucherManager.getInstance();
voucher.incrementVoucher();
}
}
当我将系统上的当前日期更改为新月的第一天时,它会正确地完成工作,否则就不会。
但只有当用户在每月的第一天或第二天运行代码时,才会发生这种情况。当用户在每月的第三天或第四天运行代码时,它会抛出一个错误。
所以我想问,是否有一种方法可以让我的应用程序创建一个后台进程,即使在应用程序不使用的情况下,也可以使用新的数字自动更新值。
https://stackoverflow.com/questions/52488668
复制相似问题