像其他语言一样,kotlin
也有循环和逻辑控制
条件判断(Conditional expressions)
kotlin
使用if
和when
来进行条件判断
如果纠结选择
if
还是when
,建议使用when
,因为它更能提高程序的健壮性
if
普通写法
fun main() {
val d: Int
val check = true
if (check) {
d = 1
} else {
d = 2
}
println(d) // 1
}
简单写法
在
kotlin
中没有? :
形式的三元表达式
fun main() {
val a = 1
val b = 2
val res = if (a > b) a else b
println(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 = 18
val 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 = 0
while (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 = 0
do {
println("Bake a cake $cakesBaked")
cakesBaked++
} while (cakesBaked < 3)
// Bake a cake 0
// Bake a cake 1
// Bake a cake 2
}
简单
while
先判断条件,如果满足再去执行{}
内中内,直到条件不满足为止。do-while
先执行一次{}
中的内容,再去判断条件。