我是Kotlin的新人(我的英语很糟糕:)。我想通过键盘输入数组来定义数组和其中元素的大小。
fun main() {
val array_size = readLine()!!.toInt()
val arr = IntArray(array_size)
for (i in 0..array_size){
arr[i] = readLine()!!.toInt()
}
for(i in 0..array_size){
println(arr[i])
}
}
[I got this message][1][1]: https://i.stack.imgur.com/DRk9F.png这是我在StackOverFlow的第一个问题,希望对那些想帮助的人来说是可以理解的。
NullPointerException
可能是因为对readLine()
的调用返回null
,然后您使用readLine()!!
强制其为非空,从而为您提供NPE。
在最近的Kotlin版本中引入了一个新方法:readln()。建议使用它代替旧的readLine
。如果找到and END OF FILE,新的readln
方法将抛出一个更具描述性的异常,而readLine
将返回null,这使得更难以看到您出错的地方。
如果输入是从文件或其他源重定向的,则可能会得到文件结束条件。如果在IDE或在线编译器服务中运行程序,通常会发生这种情况。如果您从命令行运行您的程序,它将工作,直到您进入最后一行。这是因为for(i in 0..array_size)
包含的值array_size
比上一个索引大1,所以你会得到一个越界异常。
建议使用arr代替0..(array_size - 1)
。索引,为您提供数组的有效索引范围。
readLine()
返回null
,因此当您执行readLine!!...
时,您将获得NullPointerException
。也许你想用readln来代替。