- 分支結(jié)構(gòu):if 和 when。
- 循環(huán)結(jié)構(gòu):while、do-while 和 for。
- 跳轉(zhuǎn)結(jié)構(gòu):break、continue 和 return。
一、分支結(jié)構(gòu):if 和 when
- if 分支結(jié)構(gòu)
- if 語句有三種結(jié)構(gòu):if結(jié)構(gòu)、if-else結(jié)構(gòu) 和 else-if結(jié)構(gòu)。
if (條件表達(dá)式) {
語句組
}
if (條件表達(dá)式) {
語句組
} else {
語句組
}
if (條件表達(dá)式) {
語句組
} else if (條件表達(dá)式) {
語句組
} else if (條件表達(dá)式) {
語句組
} else if (條件表達(dá)式) {
語句組
} else {
語句組
}
- if 表達(dá)式:if-else 和 else-if 兩種結(jié)構(gòu)。
var bar = if (條件表達(dá)式) {
語句組 1
表達(dá)式
} else {
語句組 2
表達(dá)式
}
var bar = if (條件表達(dá)式) {
語句組 1
表達(dá)式
} else if (條件表達(dá)式) {
語句組 2
表達(dá)式
} else if (條件表達(dá)式) {
語句組 3
表達(dá)式
} else {
語句組 4
表達(dá)式
}
-
when 多分支結(jié)構(gòu)
when提供多分支程序結(jié)構(gòu),替代Java中C語言風(fēng)格的switch語句。when結(jié)構(gòu)徹底顛覆了自C語言風(fēng)格以來大家對(duì)于switch的認(rèn)知,這個(gè)顛覆表現(xiàn)在以下三個(gè)方面:
- C語言風(fēng)格的switch語句只能比較離散的單個(gè)的整數(shù)(或可以自動(dòng)轉(zhuǎn)換為整數(shù))表達(dá)式,而when可以使用整數(shù)、浮點(diǎn)數(shù)、字符、字符串,甚至任何可以比較的類型表達(dá)式,而且它比較的數(shù)據(jù)可以是離散的也可以是連續(xù)的;
- when結(jié)構(gòu)中的每個(gè)分支不需要添加break語句,分支執(zhí)行完成就會(huì)跳出when語句;
- when結(jié)構(gòu)可以作為表達(dá)式使用,并且可以將一個(gè)結(jié)果賦值給其他變量,或者與其他表達(dá)式進(jìn)行計(jì)算,而C語言風(fēng)格的swith語句不能作為表達(dá)式。
when 結(jié)構(gòu)當(dāng)作語句使用
when (表達(dá)式) {
分支條件表達(dá)式 1 -> {
語句組 1
}
分支條件表達(dá)式 2 -> {
語句組 2
}
...
分支條件表達(dá)式 -> {
語句組 n
}
else -> {
語句組 n + 1
}
}
when 表達(dá)式
val bar = when (表達(dá)式) {
分支條件表達(dá)式 1 -> {
語句組 1
表達(dá)式
}
分支條件表達(dá)式 2 -> {
語句組 2
表達(dá)式
}
...
分支條件表達(dá)式 -> {
語句組 n
表達(dá)式
}
else -> {
語句組 n + 1
表達(dá)式
}
}
二、循環(huán)結(jié)構(gòu):while、do-while 和 for
- while 語句
while (循環(huán)條件) {
語句組
}
- do - while 語句
do {
語句組
} while (循環(huán)條件)
- for 語句
for (循環(huán)條件) {
語句組
}
案例
for (num in 1..9) {
println("$num * $num = ${num * num}")
}
val numbers = intArrayOf(43, 32, 54, 75, 2, 10)
for (item in numbers) {
println("Count is : $item")
}
for (i in numbers.indices) { // 獲取數(shù)組索引
println("numbers[$i] = ${numbers[i]}")
}
三、跳轉(zhuǎn)結(jié)構(gòu):break、continue 和 return
-
break 語句
break語句可用于while、do-while和for循環(huán)結(jié)構(gòu),它的作用是強(qiáng)行退出循環(huán)體,不再執(zhí)行循環(huán)體中剩余的語句。
在循環(huán)體中使用break語句有兩種方式:帶有標(biāo)簽和不帶標(biāo)簽,即break和break@label
val numbers = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
for (i in numbers.indices) {
if (i == 3) {
// 跳出循環(huán)
break;
}
println("Count is : $i")
}
label1@ for (x in 0..4) {
for (y in 5 downTo 1) {
if (y == x) {
// 跳轉(zhuǎn)到 label1 指向的外循環(huán)
break@label1
}
println("(x, y) = ($x, $y)")
}
}
println("Game Over !")
-
continue 語句
continue 語句用來結(jié)束本次循環(huán),跳過循環(huán)體中尚未執(zhí)行的語句,接著進(jìn)行終止條件的判斷,以決定是否繼續(xù)循環(huán)。對(duì)于 for 語句,在進(jìn)行終止條件的判斷前,還要先執(zhí)行迭代語句。
在循環(huán)體中使用continue語句有兩種方式:帶有標(biāo)簽和不帶標(biāo)簽,即continue和continue@label
val numbers = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
for (i in numbers.indices) {
if (i == 3) {
// 跳出循環(huán)
continue;
}
println("Count is : $i")
}
label1@ for (x in 0..4) {
for (y in 5 downTo 1) {
if (y == x) {
// 跳轉(zhuǎn)到 label1 指向的外循環(huán)
continue@label1
}
println("(x, y) = ($x, $y)")
}
}
println("Game Over !")