Android Kotlin货币转换器*运算符报错:无匹配参数的可调用函数
Kotlin * 运算符类型不匹配报错原因
该报错的核心原因是Kotlin无法为当前*运算符的入参匹配到可用的重载实现,结合货币转换器的开发场景,常见触发原因如下:
- 参与运算的两个值类型不兼容:最常见的情况是你直接将输入框获取到的
String类型的金额值,未转换为Int/Float/Double等数值类型,就直接和数值类型的汇率做乘法运算。
Kotlin 不会自动完成字符串到数值的隐式转换,
*运算符仅支持兼容数值类型之间的运算,类似"123" * 6.9的写法会直接触发该报错。
- 可空类型未解包:如果参与运算的其中一个值是可空数值类型(如
Double?),未做空判断和非空解包就直接参与运算,Kotlin也无法匹配到对应的运算符重载。 - 自定义类型未重载运算符:如果你封装了自定义的货币数据类,没有手动重载
times运算符方法,直接用*做自定义类型的乘法运算也会触发该报错。
修复示例
你可以先完成输入内容的类型转换后再做运算,参考代码:
// 错误写法 val inputStr = amountInputEt.text.toString() val exchangeRate = 7.18 val result = inputStr * exchangeRate // 此处String和Double运算触发报错 // 正确写法 val inputAmount = amountInputEt.text.toString().toDoubleOrNull() ?: 0.0 val exchangeRate = 7.18 val result = inputAmount * exchangeRate
内容的提问来源于stack exchange,提问作者npkp
相关产品推荐
相关产品推荐

