假设你正在使用循环。有时需要立即终止循环,而不检查测试表达式。
在这种情况下,会使用 break。遇到 break 时,它会终止最近的封闭循环(而不检查测试表达式)。这与 Java 中的 break 语句工作方式 类似。
break 如何工作?
它几乎总是与 if...else 结构一起使用。例如:
for (...) {
if (testExpression) {
break
}
}
如果 testExpression 被评估为 true,则执行 break,从而终止 for 循环。
示例:Kotlin break
fun main(args: Array<String>) {
for (i in 1..10) {
if (i == 5) {
break
}
println(i)
}
}
运行程序后,输出将是
1 2 3 4
当 i 的值为 5 时,if 内部的表达式 i == 5 被评估为 true,并执行 break。这会终止 for 循环。
示例:计算用户输入 0 之前的总和
下面的程序计算用户输入的数字的总和,直到用户输入 0 为止。
访问 Kotlin 基本输入输出 了解更多关于如何从用户那里获取输入的信息。
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")
}
运行程序后,输出将是
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 还有另一种用法(标签形式),可以终止所需的循环(可以是外部循环)。
标签 break 如何工作?

Kotlin 中的标签以 标识符 开头,后跟 @。
在这里,test@ 是标记在外部 while 循环 上的标签。现在,通过使用带有标签的 break(在此例中为 break@test),你可以中断特定的循环。
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
}
}
}
运行程序后,输出将是
i = 1; j = 1 i = 1; j = 2 i = 2; j = 1
在这里,当 i == 2 表达式被评估为 true 时,会执行 break@first,从而终止带有标签 first@ 的循环。
这是上面程序的细微变化。
在下面的程序中,break 终止了带有标签 @second 的循环。
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
}
}
}
运行程序后,输出将是
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 用于终止最内层的循环,因此在这种情况下没有必要使用标签 break。
Kotlin 中有 3 种结构化跳转表达式:break、continue 和 return。要了解 continue 和 return 表达式,请访问
- Kotlin continue
- Kotlin 函数