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