问题描述
Kotlin新手在这里,我正在尝试编写一个程序,该程序查找N个数字的最小值。 第一行包含数字N。 第二行包含由空格分隔的N个数字。 输出一个整数,该整数是N个数字的最小值。 到目前为止,我得到了一个空错误,所以我知道问题出在向数组中添加数字。这是我的代码:
Axios.post(apiUrl,this.state)
解决方法
只需颠倒顺序:
fun main(args: Array<String>) {
val scanner = Scanner(System.`in`)
val num1: Int = scanner.nextInt()
var nums = arrayListOf<Int>()
repeat (num1) {
nums.add(scanner.nextInt())
}
val smallestElement = nums.min() // < ----------- here
println(smallestElement)
}
,
java.util.Scanner
太慢了,请尝试考虑使用readLine在大多数情况下是最佳选择,并且使用System.`in`.bufferedReader().readLine()
是最快的方法,但是会通过创建缓冲区来增加堆。
得到null
的原因是因为您试图获取空数组的最小值。在您致电ArrayList.min()
时,您还没有添加任何元素。
private fun readLn() = readLine()!!
private fun readInt() = readLn().toInt()
fun main(args: Array<String>) {
val num1: Int = readInt()
var nums = IntArray(num1) { readInt() }
println(nums.min())
}
如果您不介意的话,不用将所有数字存储到数组中,然后将所有元素与最小值进行比较,就可以直接检查最小值元素,而无需创建数组:
private fun readLn() = readLine()!!
private fun readInt() = readLn().toInt()
fun main(args: Array<String>) {
val num1: Int = readInt()
var min = Int.MAX_VALUE
repeat(num1) {
val i = readInt()
if (i < min) min = i
}
println(min)
}