我试图在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)
}
答案 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 }