编辑这个页面须要登录或更高权限!
在本教程中,您将学习使用break终止循环。此外,您还将了解 break 标签。
假设您正在使用循环。有时希望不检查测试表达式就立即终止循环。
在这种情况下,可以使用break。遇到break时,它将终止最近的封闭循环(无需检查测试表达式)。这类似于在Java中的break语句工作方式。
它几乎总是与if..else 一起使用。例如,
for (...) { if (testExpression) { break } }
如果将if testExpression评估为true,break则执行终止for循环。
fun main(args: Array<String>) { for (i in 1..10) { if (i == 5) { break } println(i) } }
运行该程序时,输出为:
1 2 3 4
当的值i等于5时,表达式 i == 5时,if内部的值将计算为true,然后执行break。这将终止for循环。
下面的程序计算用户输入的数字总和,直到用户输入0。
访问Kotlin基本输入输出以了解有关如何从用户那里获取输入的更多信息。
fun main(args: Array<String>) { var sum = 0 var number: Int while (true) { print("输入一个数字: ") number = readLine()!!.toInt() if (number == 0) break sum += number } print("sum = $sum") }
运行该程序时,输出为:
输入一个数字: 4 输入一个数字: 12 输入一个数字: 6 输入一个数字: -9 输入一个数字: 0 sum = 13
在上述程序中,while循环的测试表达式始终为true。
在这里,while循环运行直到用户输入0。当用户输入0时,break将执行,从而终止while循环。
到目前为止,您所学到的是的无标签形式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。