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

Kotlin自定义类方法调用求助:新手不知调用方式

Kotlin 温度转换类的调用与代码修正

你的代码存在两个核心问题:一是main函数仅打印提示,没有创建类实例并调用转换方法;二是tempConversion方法的参数被内部同名变量覆盖,逻辑冗余。下面是修正后的方案:

推荐方案:分离输入与计算逻辑

这种方式让输入、计算职责明确,更符合编程规范:

fun main() {
    println("Enter degrees in Fahrenheit")
    // 获取用户输入并转换为Double类型
    val inputTemp = readln().toDouble()
    // 创建ComputeMethods类的实例
    val tempConverter = ComputeMethods()
    // 调用转换方法,传入输入的温度值
    tempConverter.tempConversion(inputTemp)
}

class ComputeMethods {
    // 接收华氏温度参数,完成转换并打印结果
    fun tempConversion(degreesF: Double) {
        val degreesC = (degreesF - 32.0) * 5.0 / 9.0
        val result = "$degreesF 华氏度 = $degreesC 摄氏度"
        println(result)
    }
}

关键说明:

  • 创建类实例:Kotlin中调用类的成员方法,必须先通过类名()创建实例(空构造函数的括号可省略),比如val tempConverter = ComputeMethods()。
  • 参数传递:把main中获取的输入值传给tempConversion方法,方法内部直接使用参数计算,避免重复定义同名变量。
  • 职责分离:输入逻辑放在main入口,计算逻辑放在类方法中,代码更清晰易维护。

简化方案:方法内部处理输入

如果想让转换方法包揽提示、输入和计算,也可以这样写(适合简单场景):

fun main() {
    // 创建实例并直接调用方法
    ComputeMethods().tempConversion()
}

class ComputeMethods {
    fun tempConversion() {
        println("Enter degrees in Fahrenheit")
        val degreesF = readln().toDouble()
        val degreesC = (degreesF - 32.0) * 5.0 / 9.0
        println("$degreesF 华氏度 = $degreesC 摄氏度")
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:25:35