在本教程中,您将学习使用 continue 跳过循环的当前迭代。另外,您还将在本文中了解有关 continue 标签的信息。
在这种情况下,使用continue。continue构造跳过封闭循环的当前迭代,程序的控制跳到循环体的末尾。
它几乎总是与if ... else 构造一起使用。例如,
while (testExpression1) {
// codes1
if (testExpression2) {
continue
}
// codes2
}
如果将的testExpression2值评估为true,则会执行 continue 命令,从而跳过 while 循环后该循环内的所有代码。
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.")
声明。
但是,声明:
println("$i Always printed.")
在循环的每次迭代中执行,因为此语句存在于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 = $sum")
}
运行该程序时,输出为:
输入整数: 4
输入整数: 5
输入整数: -50
输入整数: 10
输入整数: 0
输入整数: 12
sum = 31
到目前为止,您所学到的是的无标签形式continue,它跳过了最近的封闭循环的当前迭代。continue也可以通过使用continue标签来跳过所需循环(可以是外部循环)的迭代。
Kotlin中的标签以标识符开头,后跟@。
在这里,outerloop@是在while循环的外部标记的标签。现在,通过使用continue标签(continue@outerloop),您可以跳过该迭代的特定循环代码的执行。
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。