多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Kotlin `continue`表达式 > 原文: [https://www.programiz.com/kotlin-programming/continue](https://www.programiz.com/kotlin-programming/continue) #### 在本教程中,您将学习使用继续跳过循环的当前迭代。 另外,您还将在本文中了解有关继续标签的信息。 假设您正在使用循环。 有时希望跳过循环的当前迭代。 在这种情况下,将使用`continue`。`continue`构造跳过了当前的循环循环,并且程序控制跳到了循环主体的末尾。 * * * ## `continue`如何工作? 它几乎总是与[`if...else`](/kotlin-programming/if-expression "Kotlin if...else")一起使用。例如, ```kt while (testExpression1) { // codes1 if (testExpression2) { continue } // codes2 } ``` 如果将`testExpression2`求值为`true`,则将执行`continue`,在该迭代之后,它会跳过`while`循环内的所有代码。 ![How continue expression works in Kotlin?](https://img.kancloud.cn/0b/7c/0b7cb314739bc370a28179b03fcc93fc_550x373.png) * * * ### 示例:Kotlin `continue` ```kt 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.") } } ``` 运行该程序时,输出为: ```kt 1 Always printed. 1 Not always printed. 2 Always printed. 3 Always printed. 4 Always printed. 5 Always printed. 5 Not always printed. ``` 当`i`的值大于 1 且小于 5 时,将执行`continue`,从而跳过执行 ```kt println("$i Not always printed.") ``` 声明。 但是,声明 ```kt println("$i Always printed.") ``` 在此循环的每次迭代中都执行此语句,因为此语句位于`continue`构造之前。 * * * ### 示例:仅计算正数之和 下面的程序计算用户输入的最多 6 个正数的总和。 如果用户输入负数或零,则将其从计算中跳过。 访问 [Kotlin 基本输入输出](https://www.programiz.com/kotlin-programming/input-output),以了解有关如何从用户那里获取输入的更多信息。 ```kt fun main(args: Array<String>) { var number: Int var sum = 0 for (i in 1..6) { print("Enter an integer: ") number = readLine()!!.toInt() if (number <= 0) continue sum += number } println("sum = $sum") } ``` 运行该程序时,输出为: ```kt Enter an integer: 4 Enter an integer: 5 Enter an integer: -50 Enter an integer: 10 Enter an integer: 0 Enter an integer: 12 sum = 31 ``` * * * ## Kotlin `continue`标签 到目前为止,您所学到的是`continue`的未标记形式,它跳过了最近的封闭循环的当前迭代。 通过使用`continue`标签,`continue`也可用于跳过所需循环(可以是外部循环)的迭代。 * * * ### `continue`标签如何工作 ![How labeled continue works?](https://img.kancloud.cn/64/3d/643d0a7e4bd89c898b208909818bb25e_500x285.png) Kotlin 中的标签以[标识符](https://www.programiz.com/kotlin-programming/keywords-identifiers#identifiers "Kotlin identifier")开头,后跟`@`。 在此,`outsideloop @`是在外循环上[标记的标签](https://www.programiz.com/kotlin-programming/while-loop "Kotlin while Loop")。 现在,通过在标签上使用`continue`(在这种情况下为`continue@outerloop`),可以跳过该迭代的特定循环代码的执行。 * * * ### 示例:带标签的`continue` ```kt 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") } } } ``` 运行该程序时,输出为: ```kt i = 1; j = 1 i = 2; j = 1 i = 4; j = 1 i = 5; j = 1 ``` 通常不建议使用标记为`continue`的代码,因为这会使您的代码难以理解。 如果您必须使用标记为`continue`的情况,请重构代码并尝试以其他方式解决它,以使其更具可读性。 * * * Kotlin 中有 3 个结构跳转表达式:`break`,`continue`和`return`。 要了解`break`和`return`表达,请访问: * *Kotlin `break`* * *Kotlin 函数*