我观看/阅读的许多Kotlin教程都包含以下代码行:
var number = Integer.valueOf(readLine())
尽管以前可以正常工作,但现在使用Android studio和Kotlin版本时会引发编译器错误1.3.50
。它表示找到的类型为String?
,要求的类型为,类型不匹配String
。
当然,我知道为什么会这样,我知道用户可以通过控制台传递null或空值,因此它需要具有可选的null声明,但是我想了解如何解决编译器错误并保持类似状态代码而无需太多更改。
虽然我可以使用以下两行代码:
var number = Integer.valueOf(readLine()!!)
和
var number = Integer.valueOf(readLine() as String)
我相信那些人可能会抛出这里概述的不同异常
我知道我可以使用以下代码“解决”此问题:
var number : String? = readLine();
if(number == null){
number = "0"
}
val number2 = Integer.valueOf(number);
但这似乎效率极低。有使用本地Kotlin代码执行此操作的更短方法吗?
如果仅调用toInt()
from的结果readLine()
,则如果提供的值不是实际的Integer,则将获得异常。为了避免出现异常,我们可以使用toIntOrNull()
Kotlin标准库中的内容。
val x= readLine()?.toIntOrNull() ?: 0
在这种情况下,我们读取该行(作为String?
),如果该行不为空,则对其进行调用toIntOrNull()
。如果这是不为空,我们有我们的答案。否则,我们将其0
用作默认值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句