我目前正在学习 Kotlin,并使用https://play.kotlinlang.org/编译我的代码。
我尝试创建一个非常简单的程序,收集用户输入并提供输出。
但是,它无法运行。
fun main() {
println("Give me a number of minutes!")
var input:String = readLine()!!
var inputInMinutes = input.toInt()
var resultInSeconds:Int = 0
resultInSeconds = (inputInMinutes*60)
println("That is " + resultInSeconds + " seconds!")
}
我期望该程序能够编译并运行,但它显示以下错误消息:
Give me a number of minutes!
Exception in thread "main" java.lang.NullPointerException
at FileKt.main (File.kt:7)
at FileKt.main (File.kt:-1)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (:-2)
我的代码是否有错误,或者在线 IDE 不允许用户输入?
实际上,它确实编译时没有错误。
您观察到的异常是在运行时而不是编译时引发的。
关于您的特定异常:
根据网站论坛中的此帖子
readLine()
,Kotlin Playground 不支持交互式输入(就像您尝试的那样)。因此
readLine()
返回 null,并且readLine()!!
执行空断言会引发您看到的异常。一个可能的解决方案(如上面提到的帖子所建议的)是编写自己的模拟函数
readLine()
:输出:
Live demo