背景:广州地铁新政策
按照单程5元,双休/大小周,计算9月的通勤费用,还可以去除节假日哦
public class MyTest{
public static void main(String[] args) {
MyTest service = new MyTest();
BigDecimal money = BigDecimal.ZERO;
int price = 5; //单程费用
// 设置要循环的月份和年份
Month month = Month.SEPTEMBER; // 选择您想要循环的月份
int year = 2023; // 选择您想要循环的年份
LocalDate date = LocalDate.of(year, month, 1);
// boolean isWeekend = true; //第一个周末是双休【大小周的话需要这个,如果你这个月的第一个周末是双休则是true,否则为false】
// 创建一个包含节假日日期的集合
Set<LocalDate> holidays = new HashSet<>();
holidays.add(LocalDate.of(year, Month.SEPTEMBER, 29)); // 例如,假设9月29日是中秋节放假
// 循环遍历整个月份
while (date.getMonth() == month) {
// 检查日期是否为周一到周五
if (date.getDayOfWeek() != DayOfWeek.SUNDAY && date.getDayOfWeek() != DayOfWeek.SATURDAY && !holidays.contains(date)) {
money = service.jisuan2(price,money);
System.out.println("上班"+date+"=="+date.getDayOfWeek()+"==="+money);
money = service.jisuan2(price,money);
System.out.println("下班"+date+"=="+date.getDayOfWeek()+"==="+money);
}
//周六(大小周就把这里的注释放开)
/** if (date.getDayOfWeek() == DayOfWeek.SATURDAY) {
if (isWeekend){
isWeekend = false; //false表示不计费
System.out.println("=====双休!========");
}else {
isWeekend = true;
}
if (isWeekend && !holidays.contains(date)){
money = service.jisuan2(price,money);
System.out.println("上班"+date+"=="+date.getDayOfWeek()+"==="+money);
money = service.jisuan2(price,money);
System.out.println("下班"+date+"=="+date.getDayOfWeek()+"==="+money);
}
}*/
//星期天
if (date.getDayOfWeek() == DayOfWeek.SUNDAY) {
System.out.println("=====周末出去玩咯!========");
}
// 增加一天以继续循环
date = date.plusDays(1);
}
}
//这里是计算80以内95折,80-200范围8折,超过200的五折
public BigDecimal jisuan2(int price,BigDecimal money){
if (money.compareTo(new BigDecimal(80))<0){
money = money.add(new BigDecimal(price*0.95));
}else if (money.compareTo(new BigDecimal(80)) >= 0 && money.compareTo(new BigDecimal(200))<0){
money = money.add(new BigDecimal(price*0.8));
} else {
money = money.add(new BigDecimal(price*0.5));
}
return money.setScale(2,BigDecimal.ROUND_HALF_UP);
}
}
运行结果: