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

