Kotlin基礎(chǔ)認(rèn)識(shí) (8)程序流程控制

  • 分支結(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)
  1. 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 {
    語句組
}
  1. 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è)方面:
  1. C語言風(fēng)格的switch語句只能比較離散的單個(gè)的整數(shù)(或可以自動(dòng)轉(zhuǎn)換為整數(shù))表達(dá)式,而when可以使用整數(shù)、浮點(diǎn)數(shù)、字符、字符串,甚至任何可以比較的類型表達(dá)式,而且它比較的數(shù)據(jù)可以是離散的也可以是連續(xù)的;
  2. when結(jié)構(gòu)中的每個(gè)分支不需要添加break語句,分支執(zhí)行完成就會(huì)跳出when語句;
  3. 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)簽,即breakbreak@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)簽,即continuecontinue@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 !")
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容