跳到主要内容

Kotlin continue 表达式

提示
  1. 使用 continue 跳过迭代:在 Kotlin 中,continue 表达式用于跳过当前循环迭代,将程序控制权移至循环体末尾。
  2. continueif 结构配合使用continue 经常与 if...else 结构配合,以根据特定条件跳过循环中的某些迭代。
  3. 带标签的 continue:Kotlin 支持带标签的 continue,允许跳过特定循环(包括外层循环)的当前迭代,但其使用可能导致代码难以理解。

假设你在使用循环。有时候可能想要跳过循环的当前迭代。

在这种情况下,会使用 continuecontinue 结构跳过封闭循环的当前迭代,并且程序的控制权跳转到循环体的末尾。

continue 如何工作?

它几乎总是与 if...else 结构一起使用。例如,

while (testExpression1) {

// 代码1
if (testExpression2) {
continue
}
// 代码2
}

如果 testExpression2 计算为 true,则执行 continue,这将跳过该迭代内 while 循环后所有的代码。

Kotlin 中 continue 表达式如何工作?

示例:Kotlin continue

fun main(args: Array<String>) {

for (i in 1..5) {
println("$i 总是打印。")
if (i > 1 && i < 5) {
continue
}
println("$i 不总是打印。")
}
}

当你运行程序时,输出将是:

1 总是打印。
1 不总是打印。
2 总是打印。
3 总是打印。
4 总是打印。
5 总是打印。
5 不总是打印。

i 的值大于 1 且小于 5 时,执行 continue,这将跳过执行

println("$i 不总是打印。")

这条语句。

然而,语句

println("$i 总是打印。")

在循环的每次迭代中都会执行,因为这条语句出现在 continue 结构之前。

示例:仅计算正数的总和

下面的程序计算用户输入的最多 6 个正数的总和。如果用户输入负数或零,将从计算中跳过。

访问 Kotlin 基本输入输出 以了解如何从用户那里获取输入。

fun main(args: Array<String>) {

var number: Int
var sum = 0

for (i in 1..6) {
print("请输入一个整数:")
number = readLine()!!.toInt()

if (number <= 0)
continue

sum += number
}
println("总和 = $sum")
}

当你运行程序时,输出将是:

请输入一个整数:4
请输入一个整数:5
请输入一个整数:-50
请输入一个整数:10
请输入一个整数:0
请输入一个整数:12
总和 = 31

Kotlin 带标签的 continue

到目前为止你学到的是未标记形式的 continue,它跳过最近的封闭循环的当前迭代。continue 也可以用来跳过所需循环(可以是外层循环)的迭代,方法是使用带标签的 continue

带标签的 continue 如何工作?

带标签的 continue 如何工作? 在 Kotlin 中,标签以一个标识符开始,后跟 @

这里,outerloop@ 是在外层while 循环上标记的标签。现在,通过使用带标签的 continue(这种情况下是 continue@outerloop),你可以跳过该迭代特定循环的代码执行。

示例:带标签的 continue

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")
}
}
}

当你运行程序时,输出将是:

i = 1; j = 1
i = 2; j = 1
i = 4; j = 1
i = 5; j = 1

使用带标签的 continue 通常不被推荐,因为它会使你的代码难以理解。如果你处于必须使用带标签 continue 的情况,请重构你的代码,并尝试以不同的方式解决问题,使其更易读。

Kotlin 中有 3 种结构跳转表达式:breakcontinuereturn。要了解 breakreturn 表达式,请访问:

  • Kotlin break
  • Kotlin function