09. 循環(huán)

For循環(huán)

For循環(huán)可以對任何提供迭代器(iterator)的對象進行遍歷诫钓。循環(huán)體是一個代碼塊乞旦。

for(item:Int in ints){
    //...
}

如果要通過索引遍歷一個數(shù)組或 list谢澈,可以使用 indices

for(i in array.indices){
    print(array[i])
}

示例代碼

    var items = listOf("apple", "banana", "melon", "watermelon")
    for(item in items){
        println(item)
    }
    for(index in items.indices){
        println("item at $index is ${items[index]}")
    }

運行結(jié)果

apple
banana
melon
watermelon
item at 0 is apple
item at 1 is banana
item at 2 is melon
item at 3 is watermelon
while和 do...while循環(huán)

while 滿足條件則執(zhí)行循環(huán)體
do...while 至少執(zhí)行一次,然后條件滿足再繼續(xù)執(zhí)行循環(huán)體

    println("---------while 使用------------")
    var x = 5
    while (x > 0){
        println(x--)
    }
    println("---------do...while 使用------------")
    var y = 5
    do{
        println(y--)
    }while (y > 0)

運行結(jié)果

---------while 使用------------
5
4
3
2
1
---------do...while 使用------------
5
4
3
2
1
返回和跳轉(zhuǎn)

Kotlin 有三種結(jié)構(gòu)化跳轉(zhuǎn)表達式

  • return 默認從當前函數(shù)返回
  • continue 跳出當前循環(huán)凳鬓,繼續(xù)下一循環(huán)
  • break 跳出當前循環(huán)呼巴,終止循環(huán)
    for(i in 1..10){
        if(i == 3) continue
        println(i)
        if(i > 5) break
    }

循環(huán)結(jié)果

1
2
4
5
6
標簽和continue/break的跳轉(zhuǎn)

在 kotlin 中任何表達式都可以標簽來標記泽腮。標簽的格式為標識符(lable)加@符號。例如:abc@衣赶、footLable@
要給任何表達式加標簽诊赊,只要加在表達式前即可。
當 continue或break后跟隨@標識符屑埋,結(jié)束當前循環(huán)豪筝,就跳轉(zhuǎn)到標識符@后面的表達式位置開始執(zhí)行。

loop@ for(i in 1..100){
  for (j in 1..100){
    if (......) break @loop
  }
}

再看一個例子

package com.cofox.kotlin

/**
 * chapter01
 * @Author:  Jian Junbo
 * @Email:   junbojian@qq.com
 * @Create:  2017/11/15 10:59
 * Copyright (c) 2017 Jian Junbo All rights reserved.
 *
 * Description:
 */
fun main(args: Array<String>) {
    for (arg in args) {
        println(arg)
    }
    for ((index, value) in args.withIndex()) {
        println("$index -> $value")
    }
    for (indexedValue in args.withIndex()) {
        println("${indexedValue.index} -> ${indexedValue.value}")
    }
}

注意第二和第三個循環(huán)的寫法
此例的輸出是這樣的

a
b
c
d
ee
f
gg
0 -> a
1 -> b
2 -> c
3 -> d
4 -> ee
5 -> f
6 -> gg
0 -> a
1 -> b
2 -> c
3 -> d
4 -> ee
5 -> f
6 -> gg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摘能,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子敲街,更是在濱河造成了極大的恐慌团搞,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件多艇,死亡現(xiàn)場離奇詭異逻恐,居然都是意外死亡,警方通過查閱死者的電腦和手機峻黍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門复隆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姆涩,你說我怎么就攤上這事挽拂√倚颍” “怎么了邻悬?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵究飞,是天一觀的道長盾剩。 經(jīng)常有香客問我皮仁,道長颅湘,這世上最難降的妖魔是什么戳稽? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任灸芳,我火速辦了婚禮察署,結(jié)果婚禮上闷游,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好脐往,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布休吠。 她就那樣靜靜地躺著,像睡著了一般蛛碌。 火紅的嫁衣襯著肌膚如雪辖源。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天酝蜒,我揣著相機與錄音亡脑,去河邊找鬼邀跃。 笑死,一個胖子當著我的面吹牛途戒,可吹牛的內(nèi)容都是我干的僵驰。 我是一名探鬼主播蒜茴,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼粉私,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了崔泵?” 一聲冷哼從身側(cè)響起猪瞬,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎幌甘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锅风,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡皱埠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了边器。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忘巧。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡砚嘴,死狀恐怖际长,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情洋幻,我是刑警寧澤翅娶,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布竭沫,位于F島的核電站蜕提,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谎势。R本人自食惡果不足惜杨名,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一脏榆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧台谍,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽是己。三九已至又兵,卻和暖如春卒废,著一層夾襖步出監(jiān)牢的瞬間沛厨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工升熊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俄烁,地道東北人级野。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓页屠,卻偏偏與公主長得像辰企,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子牢贸,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容