Kotlin continue 表达式

在本教程中,您将学习使用 continue 跳过循环的当前迭代。另外,您还将在本文中了解有关 continue 标签的信息。

假设您正在使用循环。有时希望跳过循环的当前迭代。

在这种情况下,使用continue。continue构造跳过封闭循环的当前迭代,程序的控制跳到循环体的末尾。

continue 如何工作?

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

while (testExpression1) {

    // codes1
    if (testExpression2) {
        continue
    }
    // codes2
}

如果将的testExpression2值评估为true,则会执行 continue 命令,从而跳过 while 循环后该循环内的所有代码。

 continue 表达在Kotlin中如何工作?

示例: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.")

声明。

但是,声明:

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

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个结构跳转表达式:break、continue和return。