You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于阶梯时长计算小时费率的Java代码修改需求

修正Java阶梯计费代码以匹配需求

首先,咱们先明确你需要的阶梯计费规则:

  • 30分钟及以内:Rs.20
  • 每额外增加10分钟(不足10分钟按10分钟算),费用增加Rs.5(比如40分钟→Rs.25,50分钟→Rs.30)
  • 1小时(60分钟):Rs.35
  • 1小时10分钟(70分钟):Rs.40,以此类推

原来的代码只处理了两种简单情况,无法覆盖中间的阶梯区间,下面是修改后的完整代码:

import java.text.SimpleDateFormat;
import java.util.Date;

public class Rate_Per_Hour {
    public static void main(String[] args) {
        String TimeStart = "09.30.00 am";
        String TimeEnd = "10.10.00 am";
        SimpleDateFormat format = new SimpleDateFormat("hh.mm.ss a");
        int total = 0;
        Date d1 = null;
        Date d2 = null;

        try {
            d1 = format.parse(TimeStart);
            d2 = format.parse(TimeEnd);
            long diff = d2.getTime() - d1.getTime();
            
            // 计算总时长(转换为分钟数)
            long totalMinutes = diff / (60 * 1000);
            
            // 按照阶梯规则计算费用
            if (totalMinutes <= 30) {
                total = 20;
            } else {
                // 计算超过30分钟的部分
                int extraMinutes = (int) (totalMinutes - 30);
                // 向上取整计算需要额外收费的10分钟区间数(不满10分钟按一个区间算)
                int extraIntervals = (extraMinutes + 9) / 10;
                total = 20 + extraIntervals * 5;
            }

            System.out.println("Rs." + total);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键修改说明:

  1. 统一时长计算:把原来分开计算小时和分钟的逻辑,改为直接计算总分钟数,这样更便于阶梯计费的判断。
  2. 完善阶梯逻辑:
    • 30分钟及以内直接收取Rs.20
    • 超过30分钟的部分,用(extraMinutes +9)/10实现向上取整,确保哪怕多1分钟也按一个10分钟区间收费,再按照每区间加5Rs的规则计算总费用。

测试你给的示例场景:

  • 09:30到10:10,总时长40分钟,计算后费用为Rs.25,完全符合规则;
  • 1小时(60分钟),总费用为20 + (30/10)*5 = 35Rs,正确;
  • 1小时10分钟(70分钟),总费用为20 + (40/10)*5 =40Rs,匹配需求。

内容的提问来源于stack exchange,提问作者Ajay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:19:30