计算广州地铁新政策下一个月的通勤费用

背景:广州地铁新政策
在这里插入图片描述
按照单程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);
    }

}

运行结果:
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值