在本教程中,您将学习使用 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个正数的总和。如果用户输入负数或零,则将其从计算中跳过。
访问以了解有关如何从用户那里获取输入的更多信息。
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@是在外部标记的标签。现在,通过使用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。