在我的 kotlin 代码中,我收到类型不匹配(推断类型为 Int,但预期为 Boolean)错误。
fun main(args: Array<String>) {
var i = args.size
while (i--){
println(args[i])
}
}
您必须提供一个布尔值作为
while
的参数。 Kotlin 中没有将 Int
自动转换为 Boolean
。
因此您不能执行
while(i--)
,但您可以执行 while(i-- != 0)
或 while(i-- > 0)
。
while (x > 0) { x-- } do { val y = retrieveData() } while (y != null) // y is visible here!
虽然需要一个布尔值(真/假),但你给出一个整数(i-1)。正确的代码可能是:
fun main(args: Array<String>) {
var i = args.size
while (i>=0){
println(args[i])
i--
}
}
首先,
args.size
比数组中最后一个元素的索引大+1。因此,您必须从结果值中减去 1:args.size-1
(或者您可以使用 i-1
)。此外,就像在 Kotlin 中使用 if-statement
一样,while-loop
需要布尔表达式,即 while(true/false) {...}
。
fun methodWith(args: Array<String>) {
var i = args.size - 1 // args.size = 2
while (i >= 0) {
println(args[i])
i -= 1
}
}
fun main() {
val strings = arrayOf("Kotlin","Java","Python")
methodWith(strings)
}
您还可以为
while
的条件声明布尔属性。
fun methodWith(args: Array<String>) {
var i = args.size // args.size = 3
var bool: Boolean = true
while (bool) {
println(args[i-1]) // -1
i -= 1
if (i <= 0) bool = false
}
}
fun main() {
val strings = arrayOf("Kotlin","Java","Python")
methodWith(strings)
}
结果:
Python
Java
Kotlin