Kotlin 循环语句详解

文章目录

循环类别

在 Kotlin 中,循环语句主要有 for-in 循环、while 循环和 do-while 循环,它们用于重复执行某段代码,直到满足特定条件为止,下面分别进行讲解。

for-in 循环

for-in 循环是最常用的循环语句之一,其基本语法如下:

kotlin 复制代码
for (item in collection) {
    // 循环体
}
  • collection 是要遍历的集合,如数组、列表、区间等。
  • item 是每次循环时从集合中取出的元素,用于在循环体中进行操作。

区间

在讲解for-in前,先了解一下区间。区间是一种表示一系列连续值的数据结构,包括整数区间等,可以方便地用于循环遍历。下面详细介绍几种常见的区间类型及其在 for-in 循环中的使用方法。

整数区间

整数区间是最常用的区间类型,用于表示一系列连续的整数。可以使用 ... 运算符来创建一个整数区间

kotlin 复制代码
for (i in start..end) {
    // 循环体
}

start 是区间的起始值。

end 是区间的结束值。

示例1:正向遍历
kotlin 复制代码
for (i in 1..5) {
    println(i)
}
示例2:反向遍历

如果需要反向遍历,可以使用 downTo 关键字。

kotlin 复制代码
for (i in 5 downTo 1) {
    println(i)
}

示例1:遍历数组

kotlin 复制代码
val numbers = arrayOf(1, 2, 3, 4, 5)
for (number in numbers) {
    println(number)
}

示例2:遍历区间

kotlin 复制代码
for (i in 1..5) {
    println(i)
}

示例3:遍历字符串

kotlin 复制代码
val str = "Hello"
for (char in str) {
    println(char)
}

示例4:带索引遍历

如果需要同时获取元素及其索引,可以使用 withIndex() 函数:

kotlin 复制代码
val numbers = arrayOf(10, 20, 30, 40, 50)
for ((index, number) in numbers.withIndex()) {
    println("Index: $index, Number: $number")
}

while 循环

while 循环用于在满足某个条件时重复执行代码块,基本语法如下:

kotlin 复制代码
while (condition) {
    // 循环体
}
  • condition 是一个布尔表达式,当其为 true 时,循环体内的代码会一直执行,直到条件变为 false

示例:计算阶乘

kotlin 复制代码
var n = 5
var factorial = 1
while (n > 0) {
    factorial *= n
    n--
}
println("阶乘: $factorial")

do-while 循环

do-while 循环与 while 循环类似,但它的循环体至少会执行一次,然后再检查条件,基本语法如下:

kotlin 复制代码
do {
    // 循环体
} while (condition)
  • condition 同样是一个布尔表达式,循环体先执行一次,然后在每次循环结束时检查条件,若为 true 则继续执行循环体,否则退出循环。

示例:读取用户输入

kotlin 复制代码
var input = ""
do {
    println("输入'exit'退出:")
    input = readLine() ?: ""
} while (input != "exit")
println("已退出")

这个示例中,程序会先提示用户输入,然后检查输入是否为 "exit",如果不是则继续循环,直到用户输入 "exit" 为止。

循环控制语句

在循环中,还可以使用一些控制语句来改变循环的执行流程:

  • break:用于立即退出当前循环。
  • continue:用于跳过当前循环的剩余部分,继续执行下一次循环。

示例:使用 break 和 continue

kotlin 复制代码
for (i in 1..10) {
    if (i == 5) {
        continue // 跳过 i 为 5 的情况
    }
    if (i == 8) {
        break // 当 i 为 8 时退出循环
    }
    println(i)
}
相关推荐
曲幽30 分钟前
Termux里的二进制和脚本,到底怎么运行才不踩坑?Termux-service 保活妙招!
android·termux·nohup·services·wake-lock
plainGeekDev1 小时前
单例模式 → object 声明
android·java·kotlin
程序员陆业聪2 小时前
读者点单·03|Compose 与传统 View 混用的 12 个真实坑
android
程序员陆业聪2 小时前
读者点单·02|Android 启动优化实战:Trace 抓取→Application 编排→冷启动全流程拆解
android
Coffeeee2 小时前
帮你快速理解AI Agent之我想招个Android实习生
android·人工智能·agent
用户298698530142 小时前
Java 实现 Word 文档文本与图片提取的方法
java·后端
SimonKing3 小时前
铁子,IntelliJ IDEA 2026.1.3来了,升不升?
java·后端·程序员
恋猫de小郭3 小时前
苹果 AirPods 协议,Android 也可以使用完整版 AirPods 能力
android·前端·flutter
黄林晴3 小时前
告别无效重建:Gradle 9.6.0 解决 CI 构建缓存失效痛点告别无效重建:Gradle 9.6.0 解决 CI 建筑缓存失效痛点
android·gradle