因此,我有这张地图,其中以雇员的名字及其凭证的金额为键和值。
现在,我希望在每个新月的第一天将特定的金额添加到值中。
我有一个可以做到这一点的有效代码,但是我正在寻找一种使它变得更好的方法
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();
}
}
当我将系统上的当前日期更改为新月的第一天时,它可以正确地完成工作,否则就不能。
但这仅在用户在每月的第一天或第二天运行代码时才会发生。当用户在每月的第3或第4天运行代码时,会引发错误。
所以我想问问是否有一种方法可以让我的应用程序创建一个后台进程,即使没有使用该应用程序,该进程也会自动使用新数字更新值。