向其他语言一样,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
先执行一次{}
中的内容,再去判断条件。