Kotlin 编程语言中的 While 循环

问题描述 投票:0回答:4

在我的 kotlin 代码中,我收到类型不匹配(推断类型为 Int,但预期为 Boolean)错误。

fun main(args: Array<String>) {
   var i = args.size 
   while (i--){
    println(args[i])
   }
}
while-loop kotlin kotlin-extension
4个回答
3
投票

您必须提供一个布尔值作为

while
的参数。 Kotlin 中没有将
Int
自动转换为
Boolean

因此您不能执行

while(i--)
,但您可以执行
while(i-- != 0)
while(i-- > 0)


2
投票

Kotlin while 循环手册

while (x > 0) {
    x--
}

do {
    val y = retrieveData()
} while (y != null) // y is visible here!

1
投票

虽然需要一个布尔值(真/假),但你给出一个整数(i-1)。正确的代码可能是:

fun main(args: Array<String>) {
   var i = args.size 
   while (i>=0){
    println(args[i])
    i--
   }
}

0
投票

首先,

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
© www.soinside.com 2019 - 2024. All rights reserved.