如何使用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
相关产品推荐
相关产品推荐

