# Kotlin `break`表达式

> 原文： [https://www.programiz.com/kotlin-programming/break](https://www.programiz.com/kotlin-programming/break)

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

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

在这种情况下，将使用`break`。 遇到时，它将终止最近的封闭循环（无需检查测试表达式）。 这类似于[`break`语句在 Java](/java-programming/break-statement "Java break Statement") 中的工作方式。

* * *

## `break`如何工作？

`break`构造几乎总是与[`if..else`](/kotlin-programming/if-expression "Kotlin if...else")一起使用。 例如，

```kt
for (...) {
    if (testExpression) {
        break
    }
}
```

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

![Kotlin break](img/883ed53898fb6ecf0fdad2042b5ff270.png)

* * *

### 示例：Kotlin `break`

```kt
fun main(args: Array<String>) {

    for (i in 1..10) {
        if (i == 5) {
            break
        }
        println(i)
    }
}
```

运行该程序时，输出为：

```kt
1
2
3
4

```

当`i`的值等于 5 时，将`if`内部的表达式`i == 5`求值为`true`，并执行`break`。 [这终止了`for`循环](/kotlin-programming/for-loop "Java for Loop")。

* * *

### 示例：计算总和，直到用户输入 0

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

访问 [Kotlin 基本输入输出](/kotlin-programming/input-output)，以了解有关如何从用户那里获取输入的更多信息。

```kt
fun main(args: Array<String>) {

    var sum = 0
    var number: Int

    while (true) {
        print("Enter a number: ")
        number = readLine()!!.toInt()

        if (number == 0)
            break

        sum += number
    }

    print("sum = $sum")
}
```

运行该程序时，输出为：

```kt
Enter a number: 4
Enter a number: 12
Enter a number: 6
Enter a number: -9
Enter a number: 0
sum = 13
```

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

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

* * *

## Kotlin 带标签形式

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

* * *

### 带标签的`break`如何工作？

![Kotlin Labeled break](img/3a94e754a9aa1b9e521cb123e607b041.png)

Kotlin 中的标签以[标识符](/kotlin-programming/keywords-identifiers#identifiers "Kotlin identifier")开头，后跟`@`。

此处，`test @`是在外循环上[标记的标签](/kotlin-programming/while-loop "Kotlin while Loop")。 现在，通过在标签上使用`break`（在这种情况下为`break@test`），可以中断特定的循环。

这是一个示例：

```kt
fun main(args: Array<String>) {

    first@ for (i in 1..4) {

        second@ for (j in 1..2) {
            println("i = $i; j = $j")

            if (i == 2)
                break@first
        }
    }
}
```

运行该程序时，输出为：

```kt
i = 1; j = 1
i = 1; j = 2
i = 2; j = 1
```

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

* * *

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

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

```kt
fun main(args: Array<String>) {

    first@ for (i in 1..4) {

        second@ for (j in 1..2) {
            println("i = $i; j = $j")

            if (i == 2)
                break@second
        }
    }
}

```

运行该程序时，输出为：

```kt
i = 1; j = 1
i = 1; j = 2
i = 2; j = 1
i = 3; j = 1
i = 3; j = 2
i = 4; j = 1
i = 4; j = 2
```

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

* * *

Kotlin 中有 3 个结构跳转表达式：`break`，`continue`和`return`。 要了解`continue`和`return`表达，请访问：

*   *Kotlin `continue`*
*   *Kotlin 函数*