柚子快報(bào)邀請(qǐng)碼778899分享:Kotlin 條件和循環(huán)
柚子快報(bào)邀請(qǐng)碼778899分享:Kotlin 條件和循環(huán)
文章目錄
條件ifwhen
循環(huán)forwhilebreak 和 continue
條件
條件語句可以讓程序在滿足特定條件時(shí)執(zhí)行相應(yīng)語句。這個(gè)特定條件最終值是Boolean類型,當(dāng)它為true時(shí),會(huì)執(zhí)行相應(yīng)內(nèi)容。
if
if (條件) ...
if (條件) ... else
if (條件) ... else if ... else ...
下面是一個(gè)簡(jiǎn)單的例子
fun main() {
val int = 1
if (int > 0) {
print("int 大于 0")
}
}
int 大于 0
當(dāng) if語句后邊只跟了一個(gè)語句時(shí),可以省略花括號(hào){}
fun main() {
val int = 1
if (int > 0) print("int 大于零")
}
Note:省略花括號(hào){}時(shí),if/else只作用于其后邊的第一個(gè)語句
fun main() {
val int = 0
if (int > 0) print("只有在大于 0 時(shí)我才執(zhí)行"); print("無論何時(shí)我都執(zhí)行")
}
無論何時(shí)我都執(zhí)行
我們還可以添加else,你可以嘗試更改int的值,看看運(yùn)行結(jié)果:
fun main() {
val int = 0
if (int > 0) {
print("int 大于 0")
}else {
print("int 小于等于 0")
}
}
int 小于等于 0
如果有兩個(gè)以上的條件,還可以添加else if,可以加多個(gè):
fun main() {
val int = 1
// 不一定需要寫 else
if (int > 0) println("int > 0")
else if(int < 0) println("int < 0")
if (int > 0) println("int > 0")
else if(int == 0) println("int = 0")
else println("int < 0")
if (int > 1) print("int > 1")
else if (int > 0) print("0 < int <= 1")
else if (int == 0) print("int = 0")
else print("int < 0")
}
int > 0
int > 0
0 < int <= 1
if語句還可以用于賦值:
fun main() {
val int = 1
val msg = if (int > 0) "int > 0" else "int <= 0"
print(msg)
}
int > 0
當(dāng)包含多個(gè)語句時(shí),末尾的值將作為其值:
fun main() {
val int = 1
val result = if (int > 0) {
println("int > 0")
true
} else {
println("int <= 0")
false
}
print(result)
}
int > 0
true
when
when(變量) {
值1 -> ...
值2 -> ...
...
else -> ...
}
when {
條件1 -> ...
條件2 -> ...
...
else -> ...
}
同樣地,else語句不一定需要;當(dāng)分支的語句只有一句時(shí),花括號(hào){}也可以省略:
fun main() {
val name = "Kotlin"
var flag = false // 當(dāng) name 為 Kotlin 時(shí)改為 true
print("Hello ")
when(name) {
"Kotlin" -> {
println("Kotlin")
flag = true
}
"Java" -> println("Java")
else -> println("Unknown")
}
print(flag)
}
Hello Kotlin
true
fun main() {
val name = "ABC"
val canPrint = true
when {
name == "Kotlin" && canPrint ->
print("Hello Kotlin")
canPrint -> print("Unknown")
}
}
Unknown
when也可以用于賦值,此時(shí)else分支不可省略(除非分支涵蓋了可能的所有情況):
fun main() {
val isKotlin = true
val name = when(isKotlin) {
true -> "Kotlin"
else -> "others"
}
print(name)
}
Kotlin
fun main() {
val isKotlin = true
// isKotlin 只有兩個(gè)值,所以這里不需要 else
val name = when(isKotlin) {
true -> "Kotlin"
false -> "others"
}
print(name)
}
Kotlin
fun main() {
val isKotlin = true
val name = when {
isKotlin -> {
println("Hello Kotlin")
"Kotlin"
}
else -> "others"
}
print(name)
}
Hello Kotlin
Kotlin
循環(huán)
循環(huán)指是讓程序重復(fù)地做某件事。
for
for (元素名: 類型 in 變量) ...
因?yàn)轭愋屯茢嗟拇嬖冢覀儾恍枰@式指定類型
for (元素名: 類型 in 變量) ...
打印出String中的每一個(gè)字符:
fun main() {
val kotlin = "Kotlin"
for (char in kotlin) {
println(char)
}
}
K
o
t
l
i
n
打印出數(shù)組中的元素:
fun main() {
val array = arrayOf(3, 2, 1)
for (int in array) println(int)
}
3
2
1
Note:能夠使用for語法的變量(in后面的)都是具有一個(gè)標(biāo)記為operator的iterator(): Iterator
public class Array
...
/**
* Creates an [Iterator] for iterating over the elements of the array.
*/
public operator fun iterator(): Iterator
}
使用withIndex()方法結(jié)合解構(gòu)可以遍歷下標(biāo)+元素值:
fun main() {
val array = arrayOf(3, 2, 1)
for ((index, int) in array.withIndex()) {
println("$index $int")
}
}
0 3
1 2
2 1
也可以使用forEach和forEachIndexed完成上述操作:
fun main() {
val array = arrayOf(3, 2, 1)
array.forEach {
println(it)
}
println()
array.forEachIndexed { index, int ->
println("$index $int")
}
}
3
2
1
0 3
1 2
2 1
可以使用Range表達(dá)式(Range Expression)生成指定范圍內(nèi)的數(shù)字(不支持浮點(diǎn)數(shù)Float、Double,除了Long,其他類型會(huì)轉(zhuǎn)為Int):
增序。使用..生成包含末尾值(左閉右閉)的范圍;使用..<(Kotlin v1.9.22及之前用的是until,現(xiàn)在也能用)生成不包含末尾值(左閉右開)的范圍。fun main() {
for (int in 0..2) println(int)
println()
for (int in 0..<2) println(int)
// for (int in 0 until 2) println(int)
}
0
1
2
0
1
倒序fun main() {
for (int in 2 downTo 0) println(int)
}
2
1
0
指定步長(zhǎng)fun main() {
for (int in 0..2 step 2) println(int)
println()
for (int in 2 downTo 0 step 2) println(int)
}
0
2
2
0
while
當(dāng)條件成立時(shí),while將執(zhí)行相應(yīng)內(nèi)容。
while(條件) ...
do ... while(條件)
fun main() {
var count = 0
while (count < 2) {
println("第 $count 次")
count++
}
}
第 0 次
第 1 次
Note:count++是自增1,相當(dāng)于count = count + 1,類似的還有count--(自減1)、++count、--count。下方是count++與++count的對(duì)比,在單獨(dú)寫出時(shí),它們的效果沒有區(qū)別。在訪問其值時(shí),count++會(huì)先給出當(dāng)前值,再加1;而++count會(huì)先加1,再返回值(count--和--count類似)。
fun main() {
var count = 0
println(count++)
println(count)
}
0
1
fun main() {
var count = 0
println(++count)
println(count)
}
1
1
fun main() {
var count = 0
do {
println("第 $count 次")
count++
} while (count < 2)
}
第 0 次
第 1 次
從結(jié)果來看,二者是相同的,但do-while會(huì)不管條件是否成立,先執(zhí)行一次,以下是對(duì)比:
fun main() {
var count = 2
while (count < 2) {
println("while 第 $count 次")
count++
}
count = 2
do {
println("do-while 第 $count 次")
count++
} while (count < 2)
}
do-while 第 2 次
break 和 continue
在循環(huán)中(for或while),可以使用break跳出循環(huán),使用continue跳過一次循環(huán):
當(dāng)count == 2時(shí),執(zhí)行了break,跳出了for循環(huán),來到了循環(huán)外。
fun main() {
for (count in 0 .. 4) {
if (count == 2) break
println(count)
}
print("循環(huán)外")
}
0
1
循環(huán)外
當(dāng)count == 2時(shí),跳過了count為2的那一次循環(huán),所以打印結(jié)果中沒有2。
fun main() {
for (count in 0 .. 4) {
if (count == 2) continue
println(count)
}
print("循環(huán)外")
}
0
1
3
4
循環(huán)外
柚子快報(bào)邀請(qǐng)碼778899分享:Kotlin 條件和循環(huán)
精彩文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。