尝试找到Kotlin数组中的最低数字

问题描述

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)
}