迴圈是用來重複執行某一段程式碼. 迴圈有三種方式, while, do..while及for
while
Kotlin的 while迴圈與Java/C一模一樣, 如下所示
fun main(args:Array<String>){
var i=1
var sum=0
while(i<=100){
sum+=i
i++
}
println("1+2+3+...+100=%d".format(sum))
}
結果:
1+2+3+...+100=5050
do..while
do..while也與Java/C 一模一樣
fun main(args:Array<String>){
var i=1
var sum=0
do{
sum+=i
i++
}while(i<=100)
println("1+2+3+...+100=%d".format(sum))
}
for
indices
Kotlin的for 迴圈與Java完全不一樣, 但卻與Python 類似, 需先了解範圍的寫法 “..”。在Kotlin中,稱 “..” 為 indices(索引)。
如 1..10 : 從1到10, 包含10
如 1..5 step 2, 請注意, step 不可為負值
fun main(args:Array<String>){
for (i in 1..10 step 2){
println(i)
}
}
utnil 遞增
如 for (i in 0 until 10), 請注意,不包含10
fun main(args:Array<String>){
for (i in 1 until 10 step 2){
println(i)
}
}
downTo遞減
如 for (i in 10 downTo 1), 請注意,包含 1
fun main(args:Array<String>){
for (i in 10 downTo 1 step 2){
println(i)
}
}
巢狀迴圈
fun main(args:Array<String>){
for (i in 1..9){
for (j in 1..9){
print("%2d ".format(i*j))
}
println()
}
}
continue
忽略continue後面的任務, 直接回迴圈的下一個值
fun main(args:Array<String>){
for (i in 1..9){
for (j in 1..9){
if (j==6)continue
print("%2d ".format(i*j))
}
println()
}
}
結果
1 2 3 4 5 7 8 9
2 4 6 8 10 14 16 18
3 6 9 12 15 21 24 27
4 8 12 16 20 28 32 36
5 10 15 20 25 35 40 45
6 12 18 24 30 42 48 54
7 14 21 28 35 49 56 63
8 16 24 32 40 56 64 72
9 18 27 36 45 63 72 81
break
fun main(args:Array<String>){
for (i in 1..9){
for (j in 1..9){
if (j==6)break
print("%2d ".format(i*j))
}
println()
}
}
結果
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
6 12 18 24 30
7 14 21 28 35
8 16 24 32 40
9 18 27 36 45
標註旗標
有時在內層想要中斷外層迴圈, 若使用Java/C, 則需在外層設定一個變數來判斷是否繼續. 而在kotlin則可以在外層迴圈加上標註, 如 loop1@, 然後於break 或 continue再加下 @loop1
fun main(args:Array<String>){
loop1@for (i in 1..9){
for (j in 1..9){
if (i==6)break@loop1
print("%2d ".format(i*j))
}
println()
}
}
結果
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45

Your blog lightens my day like a beam of sunlight. Thank you for sharing positivity and inspiring words.