迴圈

      在〈迴圈〉中有 1 則留言

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

1 thought on “迴圈

  1. Marcel Forest

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *