在这种情况下,使用 continue
。continue
语句会跳过当前最内层循环的迭代,并将程序控制转移到循环体的末尾。
continue 如何工作?
它几乎总是与 if...else 语句一起使用。例如,
while (testExpression1) { // codes1 if (testExpression2) { continue } // codes2 }
如果 testExpression2 被评估为 true
,则执行 continue
,这将跳过该迭代中 while
循环内所有在其之后的代码。

示例:Kotlin continue
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.")
}
}
运行程序后,输出将是
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
,这将跳过
println("$i Not always printed.")
语句的执行。
但是,由于该语句存在于 continue
语句之前,因此该语句
println("$i Always printed.")
在每次循环迭代中都会被执行。
示例:仅计算正数的总和
下面的程序计算用户输入的最多 6 个正数的总和。如果用户输入负数或零,则将其从计算中跳过。
访问 Kotlin 基本输入输出以了解更多关于如何从用户那里获取输入的信息。
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")
}
运行程序后,输出将是
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 如何工作?

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 个结构化跳转表达式:break
、continue
和 return
。要了解 break
和 return
表达式,请访问
- Kotlin break
- Kotlin 函数