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

如何使用Kotlin实现英里到公里的单位转换

1 英里 = 1.60934 公里,你只需要给转换按钮添加点击监听,在监听逻辑中完成输入校验、换算、结果展示即可,修改后的完整代码如下:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast

class MainActivity : AppCompatActivity() {
    // 定义换算常量,避免硬编码
    private val MILE_TO_KM_RATIO = 1.60934

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val mileInput = findViewById<EditText>(R.id.text1)
        val convertButton = findViewById<Button>(R.id.btn1)
        val resultText = findViewById<TextView>(R.id.textView1)

        // 给转换按钮添加点击监听
        convertButton.setOnClickListener {
            // 读取输入内容
            val inputStr = mileInput.text.toString().trim()
            // 校验输入是否为空
            if (inputStr.isEmpty()) {
                Toast.makeText(this, "请输入需要转换的英里数值", Toast.LENGTH_SHORT).show()
                return@setOnClickListener
            }
            // 尝试转换为数字,处理非法输入
            try {
                val mileValue = inputStr.toDouble()
                // 执行换算
                val kmValue = mileValue * MILE_TO_KM_RATIO
                // 格式化结果保留2位小数后展示
                resultText.text = "转换结果:%.2f 公里".format(kmValue)
            } catch (e: NumberFormatException) {
                Toast.makeText(this, "请输入合法的数字", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

补充说明

  • 这里把原代码里的name变量改名为mileInput语义更清晰,你也可以根据自己的习惯保留原名
  • 额外添加了Toast提示,遇到空输入、非法输入时会给用户友好提示,不会直接崩溃
  • 如果需要简化校验逻辑,可以在布局文件的EditText控件中添加android:inputType="numberDecimal"属性,限制用户只能输入数字和小数点,减少非法输入的可能
  • 结果默认保留2位小数展示,你可以根据需求调整格式化规则,比如改成保留1位就把%.2f改成%.1f即可

内容的提问来源于stack exchange,提问作者YAN JAC KIE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:15:03