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

Kotlin算术运算报错求助:使用div或/运算符时应用出错

Kotlin算术运算错误排查方案

可能的错误原因及解决办法:

  • 空指针异常(最常见):你用!!强制解包tofield和fromfield,但如果values集合中找不到对应Tomune.text.toString()或from_menu.text.toString()的键,这两个变量会是null,!!直接触发空指针崩溃。
    修复代码(用安全判空替代强制解包):

    ConvertButton.setOnClickListener {
        val amountStr = amountEt.text.toString()
        // 先判断输入是否为有效数字
        val amount = try {
            amountStr.toDouble()
        } catch (e: NumberFormatException) {
            showentext.setText("请输入有效数字")
            return@setOnClickListener
        }
    
        val toRate = values[Tomune.text.toString()] ?: run {
            showentext.setText("无效目标单位")
            return@setOnClickListener
        }
        val fromRate = values[from_menu.text.toString()] ?: run {
            showentext.setText("无效源单位")
            return@setOnClickListener
        }
    
        // 处理除零情况
        if (fromRate == 0.0) {
            showentext.setText("源单位汇率不能为0")
            return@setOnClickListener
        }
    
        val result = amount * (toRate / fromRate)
        showentext.setText(result.toString())
    }
    
  • 类型不匹配:如果values集合的value类型不是Double(比如是Int、String),调用div()或/运算符会直接报错。检查你的values定义,确保是Map<String, Double>类型。如果是String类型,需要先转换:

    val toRate = values[Tomune.text.toString()]?.toDouble() ?: ...
    
  • 除零异常:当fromfield的值为0.0时,除法运算会抛出ArithmeticException,上面的修复代码已经包含了这个判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:01:07