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)
}
相关推荐
xcl092511 小时前
北京24小时自助健身房系统软件开发实战:从架构到部署全流程指南
java·spring boot·架构
一 乐13 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
卓怡学长13 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn13 小时前
Spring 注解使用详解
java·spring
其实防守也摸鱼14 小时前
Fastjson 反序列化漏洞(JNDI注入)
android·数据库·安全·oracle·自动化·fastjson·反序列化
一条小小yu14 小时前
Spring IoC的理解
java·后端·spring
落魄实习生14 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈14 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
茉莉玫瑰花茶15 小时前
GO [ 方法 ]
开发语言·后端·golang
狗凯之家源码网15 小时前
微博图床 PHP 系统搭建与实战应用指南
android·开发语言·php