Kotlin while 关键字
最后修改于 2025 年 4 月 19 日
Kotlin 的 while 循环为重复性任务提供了强大的控制流。while
关键字在条件保持为真时重复执行代码块。本教程通过实际示例深入探讨了 while 循环。
基本定义
Kotlin 中的 while
关键字创建了在条件为真时重复的循环。Kotlin 有两种 while 循环变体:while
和 do-while
。标准的 while 首先检查条件,而 do-while 在执行代码块后检查。
基本 while 循环
while 循环的最简单形式是在条件保持为真时执行代码块。在每次迭代之前都会检查条件,包括第一次。
package com.zetcode fun main() { var counter = 5 while (counter > 0) { println("Counter: $counter") counter-- } }
此示例从 5 倒数到 1。当计数器大于 0 时,循环继续。每次迭代都会打印当前值并减少计数器。当计数器达到 0 时,循环退出。
do-while 循环
do-while 循环至少执行其代码块一次,然后再检查条件。当您需要保证代码块在条件检查之前运行的时候,这很有用。
package com.zetcode fun main() { var counter = 0 do { println("Counter: $counter") counter++ } while (counter < 5) }
此 do-while 循环打印从 0 到 4 的数字。与常规 while 循环不同,它首先执行代码块,然后检查条件。即使计数器从 5 开始,代码块也会执行一次。
无限 while 循环
无限 while 循环无限期地运行,直到显式中断。这对于需要持续执行直到发生外部事件的程序很有用。
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 循环提供更多控制,但需要仔细处理索引。
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 循环中以处理多维数据。每个嵌套循环都需要其自己的计数器变量和条件。
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 循环是处理用户输入直到满足特定条件的理想选择。它们可以重复提示用户,直到收到有效的输入。
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
语句跳过当前迭代并继续下一个迭代。这对于跳过特定值同时继续循环很有用。
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 循环的最佳实践
- 确保终止: 始终保证您的循环条件最终将变为假,以防止无限循环。
- 首选 for 循环: 当迭代范围或集合时,请使用 for 循环,除非您需要 while 的灵活性。
- 初始化变量: 在循环开始之前正确初始化循环控制变量。
- 更新变量: 记住在循环体内更新循环变量以避免无限循环。
- 保持条件简单: 复杂的条件使代码更难理解和维护。
来源
本教程深入探讨了 Kotlin 的 while
关键字,展示了基本和高级用法模式。我们探讨了标准 while 循环、do-while 变体以及在集合和用户输入中的实际应用。正确使用 while 循环可以使您的 Kotlin 程序更灵活、更强大。
作者
列出 所有 Kotlin 教程。