ZetCode

Kotlin while 关键字

最后修改于 2025 年 4 月 19 日

Kotlin 的 while 循环为重复性任务提供了强大的控制流。while 关键字在条件保持为真时重复执行代码块。本教程通过实际示例深入探讨了 while 循环。

基本定义

Kotlin 中的 while 关键字创建了在条件为真时重复的循环。Kotlin 有两种 while 循环变体:whiledo-while。标准的 while 首先检查条件,而 do-while 在执行代码块后检查。

基本 while 循环

while 循环的最简单形式是在条件保持为真时执行代码块。在每次迭代之前都会检查条件,包括第一次。

BasicWhile.kt
package com.zetcode

fun main() {

    var counter = 5
    
    while (counter > 0) {
        println("Counter: $counter")
        counter--
    }
}

此示例从 5 倒数到 1。当计数器大于 0 时,循环继续。每次迭代都会打印当前值并减少计数器。当计数器达到 0 时,循环退出。

do-while 循环

do-while 循环至少执行其代码块一次,然后再检查条件。当您需要保证代码块在条件检查之前运行的时候,这很有用。

DoWhile.kt
package com.zetcode

fun main() {

    var counter = 0
    
    do {
        println("Counter: $counter")
        counter++
    } while (counter < 5)
}

此 do-while 循环打印从 0 到 4 的数字。与常规 while 循环不同,它首先执行代码块,然后检查条件。即使计数器从 5 开始,代码块也会执行一次。

无限 while 循环

无限 while 循环无限期地运行,直到显式中断。这对于需要持续执行直到发生外部事件的程序很有用。

InfiniteWhile.kt
package com.zetcode

fun main() {

    var counter = 0
    
    while (true) {
        println("Processing item $counter")
        counter++
        
        if (counter == 5) {
            println("Breaking loop")
            break
        }
    }
}

此示例显示了一个在 5 次迭代后中断的无限循环。break 语句在计数器达到 5 时退出循环。如果没有 break,此循环将永远运行。

while 循环与集合

while 循环可以通过手动管理索引来迭代集合。这种方法比 for 循环提供更多控制,但需要仔细处理索引。

WhileWithCollections.kt
package com.zetcode

fun main() {

    val fruits = listOf("Apple", "Banana", "Cherry")
    var index = 0
    
    while (index < fruits.size) {
        println("Fruit ${index + 1}: ${fruits[index]}")
        index++
    }
}

此 while 循环遍历水果列表。索引从 0 开始并递增,直到达到列表大小。每次迭代都会打印当前水果。当索引等于列表大小时,循环停止。

嵌套 while 循环

while 循环可以嵌套在其他 while 循环中以处理多维数据。每个嵌套循环都需要其自己的计数器变量和条件。

NestedWhile.kt
package com.zetcode

fun main() {

    var i = 1
    
    while (i <= 3) {
        var j = 1
        while (j <= 3) {
            print("($i,$j) ")
            j++
        }
        println()
        i++
    }
}

此嵌套 while 循环创建了一个 3x3 的坐标网格。外循环控制行,而内循环控制列。两个循环都递增其计数器,直到达到 3,打印所有坐标组合。

while 循环与用户输入

while 循环是处理用户输入直到满足特定条件的理想选择。它们可以重复提示用户,直到收到有效的输入。

WhileWithInput.kt
package com.zetcode

fun main() {

    var input: String?
    var valid = false
    
    while (!valid) {
        print("Enter 'quit' to exit: ")
        input = readLine()
        
        if (input == "quit") {
            valid = true
            println("Goodbye!")
        } else {
            println("You entered: $input")
        }
    }
}

此循环继续提示输入,直到用户输入“quit”。有效标志控制循环执行。在收到 quit 命令后,当有效变为真时,循环退出。否则,它将输入回显给用户。

while 循环与 continue

continue 语句跳过当前迭代并继续下一个迭代。这对于跳过特定值同时继续循环很有用。

WhileWithContinue.kt
package com.zetcode

fun main() {

    var num = 0
    
    while (num < 10) {
        num++
        
        if (num % 2 == 0) {
            continue
        }
        
        println("Odd number: $num")
    }
}

此循环仅打印 1 到 10 之间的奇数。当 num 为偶数时,continue 跳过 print 语句并移动到下一次迭代。循环仍然每次都递增 num,但仅打印奇数值。

while 循环的最佳实践

来源

Kotlin While 循环文档

本教程深入探讨了 Kotlin 的 while 关键字,展示了基本和高级用法模式。我们探讨了标准 while 循环、do-while 变体以及在集合和用户输入中的实际应用。正确使用 while 循环可以使您的 Kotlin 程序更灵活、更强大。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有多年的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有超过八年的经验。

列出 所有 Kotlin 教程