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
相关产品推荐
相关产品推荐

