Kotin类型不匹配:推断类型为Int?但是Int被期望

时间:2019-08-26 20:41:24

标签: arrays kotlin

我试图在Kotlin中获取两个数字之间的最大数字,但我一直遇到类型不匹配错误。我尝试使用Int?.toInt()无效。

我也尝试使用Int!作为None Null值的双重感叹号,它也不起作用。

fun main(args: Array<String>){

    val nums = arrayOf(8, 5, 6, 8, 9)
    var sorted = arrayOfNulls<Int>(nums.size)

    // manually set 2 values
    sorted[0] = nums[0]
    sorted[1] = nums[1]

    for(i in 1 until nums.size-1){
        val value = sorted[i - 1]
        val max = maxOf(value!!, nums[i]) // This line throws Null pointer exception: error: type mismatch: inferred type is Int? but Int was expected
        // do something with max
    }

    println(sorted)
}

1 个答案:

答案 0 :(得分:1)

arrayOfNulls()函数被声明为

fun <reified T> arrayOfNulls(size: Int): Array<T?>

因此sorted的任何项目都可能为空。因此,如果您想正确地将其用作null,则只需在使用前进行常规的null检查value != null

除了使用空值,您还可以使用Int.MIN_VALUE作为初始化值。

val sorted = Array(nums.size) { MIN_VALUE }