原文: https://www.programiz.com/kotlin-programming/break

在本教程中,您将学习使用break终止循环。 此外,您还将了解break标签。

假设您正在使用循环。 有时希望不检查测试表达式就立即终止循环。

在这种情况下,将使用break。 遇到时,它将终止最近的封闭循环(无需检查测试表达式)。 这类似于break语句在 Java 中的工作方式。


break如何工作?

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

  1. for (...) {
  2. if (testExpression) {
  3. break
  4. }
  5. }

如果将testExpression求值为true,则将执行break,从而终止for循环。

Kotlin `break`表达式 - 图1


示例:Kotlin break

  1. fun main(args: Array<String>) {
  2. for (i in 1..10) {
  3. if (i == 5) {
  4. break
  5. }
  6. println(i)
  7. }
  8. }

运行该程序时,输出为:

  1. 1
  2. 2
  3. 3
  4. 4

i的值等于 5 时,将if内部的表达式i == 5求值为true,并执行break这终止了for循环


示例:计算总和,直到用户输入 0

下面的程序计算用户输入的数字总和,直到用户输入 0。

访问 Kotlin 基本输入输出,以了解有关如何从用户那里获取输入的更多信息。

  1. fun main(args: Array<String>) {
  2. var sum = 0
  3. var number: Int
  4. while (true) {
  5. print("Enter a number: ")
  6. number = readLine()!!.toInt()
  7. if (number == 0)
  8. break
  9. sum += number
  10. }
  11. print("sum = $sum")
  12. }

运行该程序时,输出为:

  1. Enter a number: 4
  2. Enter a number: 12
  3. Enter a number: 6
  4. Enter a number: -9
  5. Enter a number: 0
  6. sum = 13

在上面的程序中,while循环的测试表达式始终为true

在此,while循环一直运行到用户输入 0 为止。当用户输入 0 时,将执行break,从而终止while循环。


Kotlin 带标签形式

到目前为止,您所学到的是break的未标记形式,它终止了最近的封闭循环。 还有另一种方式可以使用break(标记形式)终止所需的循环(可以是外部循环)。


带标签的break如何工作?

Kotlin `break`表达式 - 图2

Kotlin 中的标签以标识符开头,后跟@

此处,test @是在外循环上标记的标签。 现在,通过在标签上使用break(在这种情况下为break@test),可以中断特定的循环。

这是一个示例:

  1. fun main(args: Array<String>) {
  2. first@ for (i in 1..4) {
  3. second@ for (j in 1..2) {
  4. println("i = $i; j = $j")
  5. if (i == 2)
  6. break@first
  7. }
  8. }
  9. }

运行该程序时,输出为:

  1. i = 1; j = 1
  2. i = 1; j = 2
  3. i = 2; j = 1

在此,当将i == 2表达式求值为true时,将执行break@first,从而终止标记为first@的循环。


这是上述程序的一些变体。

在下面的程序中,break终止带有标签@second.的循环

  1. fun main(args: Array<String>) {
  2. first@ for (i in 1..4) {
  3. second@ for (j in 1..2) {
  4. println("i = $i; j = $j")
  5. if (i == 2)
  6. break@second
  7. }
  8. }
  9. }

运行该程序时,输出为:

  1. i = 1; j = 1
  2. i = 1; j = 2
  3. i = 2; j = 1
  4. i = 3; j = 1
  5. i = 3; j = 2
  6. i = 4; j = 1
  7. i = 4; j = 2

注意:由于break用于终止该程序中的最内层循环,因此在这种情况下不必使用带标签的中断。


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

  • Kotlin continue
  • Kotlin 函数