Kotlin程序运行抛NullPointerException:代码问题还是在线IDE不支持输入?
问题原因与解决办法
1. 在线IDE的输入机制问题
这个在线IDE支持用户输入,但并非实时控制台交互模式。程序运行前,你需要先在页面专门的「Input」输入框中预先填写好要输入的内容(比如测试用的数字),程序运行时会直接读取这些预填内容。如果没填任何内容,readLine()会返回null,而你代码里用!!强制非空,就会触发NullPointerException。
2. 代码的不安全点
你代码里的readLine()!!属于强制非空断言,本身就存在风险:除了输入为空的情况,若用户输入的不是有效整数,后续的input.toInt()还会抛出NumberFormatException。可以优化代码,增加空值和格式校验:
fun main() { println("Give me a number of minutes!") // 处理空输入 val input = readLine() ?: run { println("未提供输入内容!") return } // 处理非整数输入 val inputInMinutes = input.toIntOrNull() ?: run { println("输入不是有效的整数!") return } val resultInSeconds = inputInMinutes * 60 println("That is $resultInSeconds seconds!") }
3. 正确使用IDE输入的步骤
运行程序前,找到控制台区域上方的「Input」标签,在输入框中填写你要测试的数字(比如5),再点击运行按钮,程序就能正常读取输入并输出结果。
内容的提问来源于stack exchange,提问作者Mehalon
相关产品推荐
相关产品推荐

