错误:Kotlin:浮点文字不符合预期的类型 Float

ple*_*rax 3 kotlin kotlin-extension

我正在 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)
Run Code Online (Sandbox Code Playgroud)

Ste*_*eve 5

这是 Java 和 Kotlin 之间的主要区别。Kotlin 不像 Java 那样进行数字类型提升。对您的问题的评论向您展示了如何处理这个问题,通过匹配两种类型 Double 和/或 Float 开始,或者通过显式转换一种或另一种以使两种类型匹配。

如果您利用 Kotlin 的能力通过从变量定义中去除类型规范来推断变量类型,那么您的问题就会消失。Kotlin 推断类型这一事实是它不提升数字类型的原因之一。将两者混合会导致很多混乱。

以下是如何使用类型推断修复和简化代码类型不匹配问题的示例:

var x = readLine()!!.toFloat()
var y = readLine()!!.toFloat()
var sum = x + y
println("Addition " + sum)
Run Code Online (Sandbox Code Playgroud)

我知道这可能只是您用来更好地理解 Kotlin 的测试代码。话虽如此,我会指出如果您的用户输入非数字输入,此代码将崩溃。您可以通过在输入行周围放置 try/catch 并提供一个很好的错误消息来解决此问题。您可能希望将每个输入放入一个循环中,继续请求输入,直到用户确实提供了符合预期格式的响应。