1 选择结构
Kotlin 中选择结构主要包含 if -else、when 语句,并且可以返回结果。
1.1 if-else
1.1. 条件选择
fun main() {var score = 85if (score >= 90) {println("优秀")} else if (score >= 80) {println("良好")} else if (score >= 60) {println("及格")} else {println("不及格")}
}
说明:如果 {} 里只有一条语句,可以省略 {},if-else 语句可以嵌套使用,其他流程控制语句也可以嵌套使用。
1.1.2 条件返回
if-else 语句也可以作为结果判断。
1)单行案例
fun main() {var score = 85var res = if (score > 60) "及格" else "不及格"
}
2)多行案例
fun main() {var score = 85var res = if (score > 60) {println("恭喜您通过考试")"及格"} else {println("欢迎下次光临")"不及格"}println(res) // 及格
}
打印结果如下。
说明:返回结果需要放在 {} 中的最后一行,否则返回的是 Unit。
1.2 when
1.2.1 条件选择
when 语句与 Java 中 switch 语句类似。
1)简单案例
fun main() {var grade = 'B'when(grade) {'A' -> {println("优秀")}'B' -> {println("良好")}'C' -> {println("及格")}else -> {println("不及格")}}
}
说明:如果 {} 里只有一条语句,可以省略 {}。
2)多分支合并
fun main() {var grade = 'B'when(grade) {'A','B','C' -> println("及格")else -> println("不及格")}
}
1.2.2 条件返回
when 语句也可以作为结果判断。
1)简单案例
fun main() {var grade = 'B'var res = when(grade) {'A' -> {println("你真棒")"优秀"}else -> {println("加油")"及格"}}println(res)
}
打印结果如下。
说明:返回结果需要放在 {} 中的最后一行,否则返回的是 Unit。
2)范围分支
fun main() {var score = 85var res = when(score) {in 90..100 -> "优秀"in 80..<90 -> "良好"in 60..<80 -> "良好"else -> "不及格"}println(res) // "良好"
}
2 循环结构
Kotlin 中循环结构主要包含 for、while、do-while 循环结构。另外,continue 语句可以控制跳过某次循环,break 语句可以控制跳出循环体。
2.1 for
for 循环可以对任何提供迭代器(iterator)的对象进行遍历。
1)遍历整数范围(IntRange、IntProgression)
fun main() {for (i in 1..5) {println(i) // 打印: 1、2、3、4、5}for (i in 5 downTo 1) {println(i) // 打印: 5、4、3、2、1}for (i in 1..<5 step 2) {println(i) // 打印: 1、3}
}
2)遍历数组 / 列表
fun main() {var items = arrayOf("aa", "bb", "cc")// var items = listOf("aa", "bb", "cc")for (item in items) {println(item) // 打印: aa、bb、cc}for (index in items.indices) {println("items[${index}]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc}
}
2.2 while
fun main() {var i = 0while(i < 5) {println(i)i++}
}
2.3 do-while
fun main() {var i = 0do {println(i)i++} while (i < 5)
}
2.4 continue
使用 continue 语句,可以跳过循环体中 continue 后面的语句,继续执行下一轮循环。
1)单层循环
fun main() {for (i in 1..5) {if (i == 3) continueprintln(i) // 打印: 1、2、4、5}
}
2)多层循环
fun main() {label@ for (i in 1..3) {for (j in 4..6) {if (j == 5) continue@labelprintln("($i,$j)") // 打印: (1,4)、(2,4)、(3,4)}}
}
说明:label 可以修改为任何符合变量命名规范的名字。
2.5 break
使用 break 语句,可以跳出循环体,继续执行循环体后面的语句。
1)单层循环
fun main() {for (i in 1..5) {if (i == 3) breakprintln(i) // 打印: 1、2}
}
2)多层循环
fun main() {label@ for (i in 1..3) {for (j in 4..6) {if (j == 5) break@labelprintln("($i,$j)") // 打印: (1,4)}}
}
说明:label 可以修改为任何符合变量命名规范的名字。