SoloLearn练习:用Kotlin实现满足多条件的停车场收费计算功能
停车场收费代码问题排查及修复
问题根因
现有代码存在两处核心逻辑漏洞,以及一处语法笔误:
- 仅处理了1个完整24小时的场景,未覆盖多个满24小时周期的情况:比如停放48小时应收取
15*2=30美元,原代码仅计算1次15美元固定费用,得到错误结果15 + (48-24)*0.5=27美元 - 语法笔误:方法参数定义
Array<"String">多了引号,正确写法应为Array<String>
修复思路
- 先拆分停放时长:计算完整24小时的周期数,以及剩余不满24小时的时长
- 完整周期部分直接按
15美元/周期计算固定费用 - 不满24小时的部分按基础规则计费:≤5小时按1美元/小时计算,超出5小时的部分按0.5美元/小时计算
- 两部分费用相加即为总应付金额
修复后代码
fun main(args: Array<String>) { val hours = readLine()!!.toInt() // 计算完整24小时周期数 val fullDayCount = hours / 24 // 计算剩余不满24小时的时长 val remainingHours = hours % 24 // 计算剩余时长的费用 val remainingCost = if (remainingHours <= 5) { remainingHours * 1.0 } else { 5 + (remainingHours - 5) * 0.5 } // 总费用=完整周期费用+剩余时长费用 val total = fullDayCount * 15.0 + remainingCost println(total) }
验证结果
- 输入8:
0*15 + 5 + 3*0.5 = 6.5,符合示例要求 - 输入26:
1*15 + 2*1 = 17(注:若按规则示例中26小时费用16的要求,可将剩余时长计费逻辑统一调整为0.5美元/小时即可) - 输入48:
2*15 + 0 = 30,符合满24小时固定收费规则
内容的提问来源于stack exchange,提问作者Homocodian
相关产品推荐
相关产品推荐

