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

Kotlin单函数拆分为多面额计算函数的实现及语法报错排查

错误直接原因

你写的Penny函数里存在语法错误:

val penny = myChange/100);

这行多了一个多余的右括号')',是触发你当前报错的直接原因。


其他需要修正的逻辑问题

除了语法错误,你的拆分逻辑还有多处不符合需求的问题:

  • 没有对计算出的面额数量做Math.floor取整,会得到小数而非整数的张/枚数
  • 每个面额函数返回的剩余金额没有传递给下一个函数,所有函数都在计算原始总金额对应的面额,结果完全错误
  • 函数名不符合要求:要求是dollars()、quarters()、dimes()、nickels()、pennies()小写开头
  • pennies的计算逻辑错误:原实现是Math.floor(剩余金额 * 100),你写的是除以100,逻辑完全反向
  • 混用Double和Float会导致精度误差,统一用Double即可
  • pennies函数要求返回剩余金额,你当前的返回值是Unit不符合要求

修正后的完整代码

fun main(args: Array<String>) {
    val change = 44.77 // 按需求设置测试值
    var remaining = dollars(change)
    remaining = quarters(remaining)
    remaining = dimes(remaining)
    remaining = nickels(remaining)
    pennies(remaining)
}

fun dollars(myChange: Double): Double {
    val count = Math.floor(myChange / 1.0)
    print(Math.round(count * 1) / 1)
    println(if (count < 2) "_Dollar" else "_Dollars")
    return myChange - count * 1.0
}

fun quarters(myChange: Double): Double {
    val count = Math.floor(myChange / 0.25)
    print(Math.round(count * 4) / 4)
    println(if (count < 2) "_Quarter" else "_Quarters")
    return myChange - count * 0.25
}

fun dimes(myChange: Double): Double {
    val count = Math.floor(myChange / 0.10)
    print(Math.round(count * 10) / 10)
    println(if (count < 2) "_Dime" else "_Dimes")
    return myChange - count * 0.10
}

fun nickels(myChange: Double): Double {
    val count = Math.floor(myChange / 0.05)
    print(Math.round(count * 20) / 20)
    println(if (count < 2) "_Nickel" else "_Nickels")
    return myChange - count * 0.05
}

fun pennies(myChange: Double): Double {
    val count = Math.floor(myChange * 100)
    print(Math.round(count * 100) / 100)
    println(if (count < 2) "_Penny" else "_Pennies")
    return myChange - count * 0.01
}

运行输出(测试值44.77)

和原单函数输出完全一致:

44_Dollars
3_Quarters
0_Dime
0_Nickel
2_Pennies

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:06:04