while 与 do-while:分别适用于何时
编写 while 和 do-while 循环,并了解它们各自的适用场景。
while 与 do-while:分别适用于何时 是 CoddyKit 上的免费 Kotlin Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Kotlin Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Kotlin Academy 课程共包含 4 节课。
两种 while 循环
Kotlin 同时提供 while(前置测试)和 do-while(后置测试)。区别在于:do-while 始终至少执行一次循环体。
基本 while 循环
while 会在每次迭代前检查条件。如果初始条件为假,循环体就永远不会执行。
fun main() {
var count = 0
while (count < 3) {
println("count = $count")
count++
}
}基本 do-while 循环
do-while 会先执行循环体,再检查条件。循环体始终至少执行一次。
fun main() {
var n = 10
do {
println("n = $n")
n--
} while (n > 7)
}读取直到哨兵值
当您不知道需要多少次迭代时,while 循环非常适合使用,例如读取数据直到遇到哨兵值。
fun main() {
val data = listOf(3, 7, 0, 9)
var i = 0
while (i < data.size && data[i] != 0) {
println("got ${data[i]}")
i++
}
println("stopped at index $i")
}搜索列表
对于满足条件后立即停止的提前退出搜索,请使用 while。
fun main() {
val nums = listOf(2, 4, 7, 8, 10)
var i = 0
while (i < nums.size && nums[i] % 2 == 0) i++
println("first odd at index $i = ${nums[i]}") // 2 = 7
}使用 do-while 验证输入
当您必须先执行操作(提示、读取或尝试),然后才能检查是否成功时,请使用 do-while。
fun main() {
val validInputs = listOf("y", "n", "y")
var idx = 0
var input: String
do {
input = validInputs[idx++]
println("user typed: $input")
} while (input != "n" && idx < validInputs.size)
}递减计数器
while 循环可以简洁地处理递减到零的计数器。
fun main() {
var lives = 3
while (lives > 0) {
println("Lives left: $lives")
lives--
}
println("Game over")
}使用 break 创建无限循环
对于退出条件复杂的事件循环式代码,请使用 while (true) 和 break。
fun main() {
val items = listOf(1, 2, 3, -1, 4)
var i = 0
while (true) {
if (i >= items.size || items[i] < 0) break
println("ok: ${items[i]}")
i++
}
}比较 while 和循环
如果您预先知道迭代次数,请优先使用 for。当迭代次数取决于运行时状态时,请使用 while。
fun main() {
// for: known bounds
for (i in 1..3) print("$i ")
println()
// while: state-driven
var n = 1
while (n <= 3) { print("$n "); n++ }
println()
}使用两个变量的循环
while 循环可以跟踪多个变量,这对斐波那契数列等算法很有帮助。
fun main() {
var a = 0
var b = 1
while (b < 50) {
print("$b ")
val next = a + b
a = b
b = next
}
println() // 1 1 2 3 5 8 13 21 34
}do-while 始终执行一次
即使条件从一开始就是假,do-while 的循环体也会执行一次。有时这正是您需要的行为,但有时也可能是一个错误。
fun main() {
var x = 100
do {
println("x = $x") // prints once
x--
} while (x > 1000) // false immediately
}快速检查
无论条件如何,哪个循环都能保证循环体至少执行一次?
回顾
当迭代次数取决于运行时条件时,请使用 while。当循环体必须至少执行一次时(例如验证或重试),请使用 do-while。如果迭代次数已知,请优先使用 for。
用 AI 导师学习 Kotlin — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 51
- 课程
- 203
常见问题解答
「while 与 do-while:分别适用于何时」课时是免费的吗?
是的 — 「while 与 do-while:分别适用于何时」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kotlin Academy 课程的其余内容,请升级到 CoddyKit PRO。 Kotlin Academy 课程共包含 4 节课。
「while 与 do-while:分别适用于何时」这节课中我会学到什么?
编写 while 和 do-while 循环,并了解它们各自的适用场景。 你通过在浏览器中直接运行的动手代码来练习 Kotlin Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Kotlin Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Kotlin Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「while 与 do-while:分别适用于何时」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Kotlin Academy 课中编写并运行代码吗?
能。每节 Kotlin Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 for 循环遍历范围与集合
- while 与 do-while:分别适用于何时
- forEach、repeat 与 forEachIndexed
- break、continue 与带标签返回