我正在用Kotlin制作一个简单的数学计算器,当我尝试初始化用作浮点整数0.00的变量之一的值时,屏幕上出现错误。
var x:Float= readLine()!!.toFloat()
var y:Float= readLine()!!.toFloat()
var sum:Float=0.00// the error message is showcased in this line
sum=x+y
println("Addition " + sum)
答案 0 :(得分:1)
这是Java和Kotlin之间的主要区别。 Kotlin不会像Java那样进行数字类型升级。您所提问题的注释向您展示了如何解决此问题,方法是将两种类型的Double和/或Float匹配起来,或者通过显式转换一种或另一种以使两种类型匹配。
如果您利用Kotlin的能力通过从变量定义中删除类型说明来推断变量类型,那么您的问题就消除了。 Kotlin推断类型的事实是它不提升数字类型的原因之一。两者混合会导致很多混乱。
这是一个使用类型推断如何解决和简化代码的类型不匹配问题的示例:
var x = readLine()!!.toFloat()
var y = readLine()!!.toFloat()
var sum = x + y
println("Addition " + sum)
我了解这可能只是您用来更好地了解Kotlin的测试代码。话虽如此,我要指出的是,如果您的用户输入非数字输入,此代码将崩溃。您可以通过在输入行周围进行try / catch并提供良好的错误消息来解决此问题。您可能希望将每个输入循环放置,继续要求输入,直到用户确实提供了预期格式的响应为止。