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

Kotlin中如何关联方法/函数?两个实现版本运行异常求解答

问题原因说明

版本1问题

  • 你在main函数中定义的changeDue变量,和内层truncate函数的入参重名,函数执行时优先使用入参,外层变量从未被调用,因此会触发未使用变量的警告
  • 核心错误:仅完成了truncate函数的定义,没有编写代码调用该函数,因此运行后没有任何执行逻辑,自然不会产生输出。

版本2问题

  • 仅在main函数中定义了quarters类,既没有实例化类对象,也没有调用类内部的truncate方法,所有逻辑都没有被触发,运行后无输出属于正常结果,和Code Playground运行环境无关。
修复示例

修复后的版本1

fun main(args: Array<String>) {
    var changeDue = 1.23
    fun truncate(changeDue: Double): Double{
        var numberOfQuarters = changeDue / .25
        println(numberOfQuarters)
        var remainingChange = changeDue - numberOfQuarters * .25
        println(remainingChange)
        return changeDue
    }
    // 补充函数调用
    truncate(changeDue)
}

修复后的版本2(类实现)

fun main(args: Array<String>) {
    // Kotlin类名约定首字母大写
    class Quarters{
        var changeDue = 1.23
        fun truncate(changeDue: Double): Double{
            var numberOfQuarters = changeDue / .25
            println(numberOfQuarters)
            var remainingChange = changeDue - numberOfQuarters * .25
            println(remainingChange)
            return changeDue
        }
    }
    // 补充类实例化+方法调用逻辑
    val quartersInstance = Quarters()
    quartersInstance.truncate(quartersInstance.changeDue)
}
优化建议

如果你的需求是计算能兑换的整数个25美分硬币,当前的Double除法会得到带小数的结果,比如1.23/0.25会得到4.92,需要补充取整逻辑,修改为(changeDue / 0.25).toInt()即可得到整数个硬币的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:45:08