在本教程中,您將學(xué)習(xí)使用 continue 跳過循環(huán)的當(dāng)前迭代。另外,您還將在本文中了解有關(guān) continue 標(biāo)簽的信息。
假設(shè)您正在使用循環(huán)。有時(shí)希望跳過循環(huán)的當(dāng)前迭代。
在這種情況下,使用continue。continue構(gòu)造跳過封閉循環(huán)的當(dāng)前迭代,程序的控制跳到循環(huán)體的末尾。
它幾乎總是與if ... else 構(gòu)造一起使用。例如,
while (testExpression1) { // codes1 if (testExpression2) { continue } // codes2 }
如果將的testExpression2值評估為true,則會(huì)執(zhí)行 continue 命令,從而跳過 while 循環(huán)后該循環(huán)內(nèi)的所有代碼。
fun main(args: Array<String>) { for (i in 1..5) { println("$i Always printed.") if (i > 1 && i < 5) { continue } println("$i Not always printed.") } }
運(yùn)行該程序時(shí),輸出為:
1 Always printed. 1 Not always printed. 2 Always printed. 3 Always printed. 4 Always printed. 5 Always printed. 5 Not always printed.
當(dāng)i的值大于1且小于5時(shí),將繼續(xù)執(zhí)行continue,從而跳過執(zhí)行
println("$i Not always printed.")
聲明。
但是,聲明:
println("$i Always printed.")
在循環(huán)的每次迭代中執(zhí)行,因?yàn)榇苏Z句存在于continue構(gòu)造之前。
下面的程序計(jì)算用戶輸入的最多6個(gè)正數(shù)的總和。如果用戶輸入負(fù)數(shù)或零,則將其從計(jì)算中跳過。
訪問Kotlin基本輸入輸出以了解有關(guān)如何從用戶那里獲取輸入的更多信息。
fun main(args: Array<String>) { var number: Int var sum = 0 for (i in 1..6) { print("輸入整數(shù): ") number = readLine()!!.toInt() if (number <= 0) continue sum += number } println("sum = $sum") }
運(yùn)行該程序時(shí),輸出為:
輸入整數(shù): 4 輸入整數(shù): 5 輸入整數(shù): -50 輸入整數(shù): 10 輸入整數(shù): 0 輸入整數(shù): 12 sum = 31
到目前為止,您所學(xué)到的是的無標(biāo)簽形式continue,它跳過了最近的封閉循環(huán)的當(dāng)前迭代。continue也可以通過使用continue標(biāo)簽來跳過所需循環(huán)(可以是外部循環(huán))的迭代。
Kotlin中的標(biāo)簽以標(biāo)識(shí)符開頭,后跟@。
在這里,outerloop@是在while循環(huán)的外部標(biāo)記的標(biāo)簽?,F(xiàn)在,通過使用continue標(biāo)簽(continue@outerloop),您可以跳過該迭代的特定循環(huán)代碼的執(zhí)行。
fun main(args: Array<String>) { here@ for (i in 1..5) { for (j in 1..4) { if (i == 3 || j == 2) continue@here println("i = $i; j = $j") } } }
運(yùn)行該程序時(shí),輸出為:
i = 1; j = 1 i = 2; j = 1 i = 4; j = 1 i = 5; j = 1
通常不建議使用帶標(biāo)簽的continue,因?yàn)檫@會(huì)使您的代碼難以理解。 如果您必須使用標(biāo)記為continue的情況,請重構(gòu)代碼并嘗試以其他方式解決它,以使其更具可讀性。
Kotlin中有3個(gè)結(jié)構(gòu)跳轉(zhuǎn)表達(dá)式:break、continue和return。