1 選擇結構
Kotlin 中選擇結構主要包含 if -else、when 語句,並且可以返回結果。
1.1 if-else
1.1. 條件選擇
fun main() {
var score = 85
if (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 = 85
var res = if (score > 60) "及格" else "不及格"
}
2)多行案例
fun main() {
var score = 85
var 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 = 85
var 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
}
for ((index, item) in items.withIndex()) {
println("items[$index]=$item") // 列印: items[0]=aa、items[1]=bb、items[2]=cc
}
}
2.2 while
fun main() {
var i = 0
while(i < 5) {
println(i)
i++
}
}
2.3 do-while
fun main() {
var i = 0
do {
println(i)
i++
} while (i < 5)
}
2.4 continue
使用 continue 語句,可以跳過迴圈體中 continue 後面的語句,繼續執行下一輪迴圈。
1)單層迴圈
fun main() {
for (i in 1..5) {
if (i == 3) continue
println(i) // 列印: 1、2、4、5
}
}
2)多層迴圈
fun main() {
label@ for (i in 1..3) {
for (j in 4..6) {
if (j == 5) continue@label
println("($i,$j)") // 列印: (1,4)、(2,4)、(3,4)
}
}
}
說明:label 可以修改為任何符合變數命名規範的名字。
2.5 break
使用 break 語句,可以跳出迴圈體,繼續執行迴圈體後面的語句。
1)單層迴圈
fun main() {
for (i in 1..5) {
if (i == 3) break
println(i) // 列印: 1、2
}
}
2)多層迴圈
fun main() {
label@ for (i in 1..3) {
for (j in 4..6) {
if (j == 5) break@label
println("($i,$j)") // 列印: (1,4)
}
}
}
說明:label 可以修改為任何符合變數命名規範的名字。
宣告:本文轉自【Kotlin】流程控制。