输入和输出数组错误| Kotlin



我是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来代替。

最新更新