在本教程中,您將學(xué)習(xí)使用break終止循環(huán)。此外,您還將了解 break 標(biāo)簽。
假設(shè)您正在使用循環(huán)。有時希望不檢查測試表達(dá)式就立即終止循環(huán)。
在這種情況下,可以使用break。遇到break時,它將終止最近的封閉循環(huán)(無需檢查測試表達(dá)式)。這類似于在Java中的break語句工作方式。
它幾乎總是與if..else 一起使用。例如,
for (...) { if (testExpression) { break } }
如果將if testExpression評估為true,break則執(zhí)行終止for循環(huán)。
fun main(args: Array<String>) { for (i in 1..10) { if (i == 5) { break } println(i) } }
運(yùn)行該程序時,輸出為:
1 2 3 4
當(dāng)?shù)闹礽等于5時,表達(dá)式 i == 5時,if內(nèi)部的值將計算為true,然后執(zhí)行break。這將終止for循環(huán)。
下面的程序計算用戶輸入的數(shù)字總和,直到用戶輸入0。
訪問Kotlin基本輸入輸出以了解有關(guān)如何從用戶那里獲取輸入的更多信息。
fun main(args: Array<String>) { var sum = 0 var number: Int while (true) { print("輸入一個數(shù)字: ") number = readLine()!!.toInt() if (number == 0) break sum += number } print("sum = $sum") }
運(yùn)行該程序時,輸出為:
輸入一個數(shù)字: 4 輸入一個數(shù)字: 12 輸入一個數(shù)字: 6 輸入一個數(shù)字: -9 輸入一個數(shù)字: 0 sum = 13
在上述程序中,while循環(huán)的測試表達(dá)式始終為true。
在這里,while循環(huán)運(yùn)行直到用戶輸入0。當(dāng)用戶輸入0時,break將執(zhí)行,從而終止while循環(huán)。
到目前為止,您所學(xué)到的是的無標(biāo)簽形式break,它終止了最近的封閉循環(huán)。break可以使用另一種方式(標(biāo)記形式)終止所需的循環(huán)(可以是外部循環(huán))。
Kotlin中的標(biāo)簽以標(biāo)識符開頭,后跟@。
在此,test@是在外部while循環(huán)中標(biāo)記的標(biāo)簽?,F(xiàn)在,通過使用帶有標(biāo)簽的break(在這種情況下為break @test),可以打破特定的循環(huán)。
fun main(args: Array<String>) { first@ for (i in 1..4) { second@ for (j in 1..2) { println("i = $i; j = $j") if (i == 2) break@first } } }
運(yùn)行該程序時,輸出為:
i = 1; j = 1 i = 1; j = 2 i = 2; j = 1
在這里,當(dāng)i == 2表達(dá)式的計算結(jié)果為true時,將執(zhí)行break@first來終止標(biāo)記為first@的循環(huán)。
這是上述程序的一些變體。
在下面的程序中,break終止帶有標(biāo)簽標(biāo)記 @second 的循環(huán)。
fun main(args: Array<String>) { first@ for (i in 1..4) { second@ for (j in 1..2) { println("i = $i; j = $j") if (i == 2) break@second } } }
運(yùn)行該程序時,輸出為:
i = 1; j = 1 i = 1; j = 2 i = 2; j = 1 i = 3; j = 1 i = 3; j = 2 i = 4; j = 1 i = 4; j = 2
注意:由于break在程序中用于終止最里面的循環(huán),因此在這種情況下不必使用帶標(biāo)簽的 break 。
Kotlin中有3種結(jié)構(gòu)性跳躍表達(dá):break,continue和return。