向其他語言一樣,kotlin
也有循環和邏輯控制
條件判斷(Conditional expressions)
kotlin
使用if
和when
來進行條件判斷
如果糾結選擇
if
還是when
,建議使用when
,因為它更能提高程序的健壯性
if
普通寫法
fun main() {val d: Intval check = trueif (check) {d = 1} else {d = 2}println(d) // 1
}
簡單寫法
在
kotlin
中沒有? :
形式的三元表達式
fun main() {val a = 1val b = 2val res = if (a > b) a else bprintln(res) // 2
}
when
當有多個條件分支時使用when
條件和執行的邏輯用
->
分割
fun main() {val obj = "Hello"when (obj) {"1" -> println("One") // 如果 obj == "1",執行當前分支"Hello" -> println("Greeting") // 如果 obj == "Hello",執行當前分支else -> println("Unknown") // 如果上邊的所有分支都不符合,則執行當前分支}// Greeting
}
注意執行的順序是從上而下,如果有一個條件滿足了則不會進行下邊的判斷了
接收返回值的when
fun main() {val obj = "Hello"val result = when (obj) {"1" -> "One""Hello" -> "Greeting"else -> "Unknown"}println(result) // Greeting
}
一般情況下,
else
分支是必須的,除非編譯器檢測到上邊的條件覆蓋了所有可能的情況
除了上邊的匹配字符串,還可以使用條件表達式
fun main() {val temp = 18val description = when {temp < 0 -> "very cold"temp < 10 -> "a bit cold"temp < 20 -> "warm"else -> "hot"}println(description) // warm
}
范圍(Range)
學習循環之前先來看一下怎么創建一個Range
常見的創建Range
的方式是使用..
1..4
-1,2,3,4
1..<4
-1,2,3
4 downTo 1
-4,3,2,1
1..5 step 2
-1,3,5
'a'..'d'
-'a','b','c','d'
'z' downTo 's' step 2
-'z','x','v','t'
循環(Loops)
編程中最常見的兩種循環結構是for
和while
。使用for
迭代一系列值并執行操作。使用while
繼續操作,直到滿足特定條件。
for
fun main() {for (number in 1..5) {print(number)}
// 12345
}
fun main() {val cakes = listOf("carrot", "cheese", "chocolate")for (cake in cakes) {println("Yummy, it's a $cake cake!")}
// Yummy, it's a carrot cake!
// Yummy, it's a cheese cake!
// Yummy, it's a chocolate cake!
}
while
while
有兩個運行方式,一種是簡單的while
循環
fun main() {var cakesEaten = 0while (cakesEaten < 3) {println("Eat a cake $cakesEaten")cakesEaten++}
// Eat a cake 0
// Eat a cake 1
// Eat a cake 2
}
另一種是do-while
fun main() {var cakesBaked = 0do {println("Bake a cake $cakesBaked")cakesBaked++} while (cakesBaked < 3)
// Bake a cake 0
// Bake a cake 1
// Bake a cake 2
}
簡單
while
先判斷條件,如果滿足再去執行{}
內中內,直到條件不滿足為止。do-while
先執行一次{}
中的內容,再去判斷條件。