Kotlin新手编写求N个数最小值程序遇空指针错误求助
解决Kotlin求最小值时的空指针异常问题
嘿,我来帮你排查这个空指针问题~
你的代码里的核心问题是调用min()的时机不对:你在还没往nums列表里添加任何元素的时候,就先执行了val smallestElement = nums.min(),这时候空列表的min()方法会返回null,而你后续添加元素的操作并不会改变已经赋值好的smallestElement(它是不可变的val变量),最后打印这个null的时候自然就触发空指针异常了。
修正后的代码
把获取最小值的步骤放到所有元素添加完成之后就可以解决问题了:
fun main(args: Array<String>) { val scanner = Scanner(System.`in`) val num1: Int = scanner.nextInt() val nums = arrayListOf<Int>() // 先把所有输入的数字添加到列表里 repeat(num1) { nums.add(scanner.nextInt()) } // 现在再去获取最小值 val smallestElement = nums.min() println(smallestElement) }
额外的严谨性优化
如果担心用户输入的N为0(也就是没有输入任何数字),可以给smallestElement加个空值处理,避免再次出现异常:
val smallestElement = nums.min() ?: error("请输入至少一个数字") // 或者更友好的提示: // val smallestElement = nums.min() ?: "没有输入任何数字"
这样调整后,程序就能正常读取输入并输出最小值啦~
内容的提问来源于stack exchange,提问作者Alejandro Diaz
相关产品推荐
相关产品推荐

