Kotlin停车场收费计算:如何实现第三阶段日封顶收费逻辑
停车场收费逻辑实现方案
实现思路
- 核心按照24小时为单个计费周期拆分总时长,每个周期单独计费后累加,避免全局封顶导致长时长计费错误
- 每个完整24小时周期的费用取「按前两阶段规则计算的费用」和「单日15美元封顶值」的较小值,符合封顶规则要求
- 不足24小时的剩余时长,直接沿用已验证的前两阶段逻辑计算费用
完整可运行代码
fun main(args: Array<String>) { val hours = readLine()!!.toInt() val DAILY_CAP = 15.0 // 单日封顶费用,可按需调整 val fullDays = hours / 24 // 完整24小时周期数 val remainHours = hours % 24 // 剩余不足24小时的时长 // 单个完整24小时按前两阶段规则计算的基础费用:5*1 + 19*0.5 = 14.5美元 val dailyBaseCost = 5 * 1.0 + (24 - 5) * 0.5 val fullDaysCost = fullDays * minOf(dailyBaseCost, DAILY_CAP) // 计算剩余时长费用 var remainCost = 0.0 if (remainHours <= 5) { remainCost = remainHours * 1.0 } else { remainCost = 5 * 1.0 + (remainHours - 5) * 0.5 } val total = fullDaysCost + remainCost println(total) }
计费验证
- 停车6小时:剩余时长6小时,费用51 +10.5 = 5.5美元,符合规则
- 停车24小时:1个完整周期,费用14.5美元(未超过15美元封顶,按实际收取)
- 停车25小时:1个完整周期费用14.5 + 剩余1小时费用1 = 15.5美元,符合要求
- 停车48小时:2个完整周期,总费用14.5*2=29美元
内容的提问来源于stack exchange,提问作者Ilkin Ahmad Jr.
相关产品推荐
相关产品推荐

