迴圈是用來重複執行某一段程式碼. 迴圈有三種方式, 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.