Kotlin 循环(for/foreach)与返回和跳跃(break/continue/return)

class ExampleUnitTest {

    @Test
    fun test1() {
        println("===========for in==============")

        for (i in 1..5) {
            println(i)
        }
        //1
        //2
        //3
        //4
        //5

        println("===========for in until==============")

        for (i in 1 until 5) {
            println(i)
        }
        //1
        //2
        //3
        //4

        println("==========for in===============")

        val list1 = listOf(1, 2, 3, 4)

        for (i in list1) {
            println(i)
        }
        //1
        //2
        //3
        //4

        println("===========for in withIndex==============")

        for ((index, value) in list1.withIndex()) {
            println("$index : $value")
        }
        //0 : 1
        //1 : 2
        //2 : 3
        //3 : 4

        println("===========forEach==============")


        list1.forEach {
            println("========$it")
        }
        //========1
        //========2
        //========3
        //========4

    }
    

    //跳跃语法
    //Kotlin中引入了标签的概念,可以直接控制程序应该执行的代码是什么。
    //标签后面用@标明。
    //成对的标签可以自己定义

    //================================return=====================================

    @Test
    fun return1() {
        println("===========标签 return@forEach ==============")

        val list1 = listOf(1, 2, 3, 4, 5)

        list1.forEach {
            //不执行后续
            if (it == 4) return@forEach
            println(it)
        }
    }
    //===========标签 return@forEach ==============
    //1
    //2
    //3
    //5

    @Test
    fun return2() {
        println("===========标签 return@lit ==============")

        val list1 = listOf(1, 2, 3, 4, 5)

        list1.forEach lit@{
            //不执行后续
            if (it == 4) return@lit
            println(it)
        }
    }
    //===========标签 return@lit ==============
    //1
    //2
    //3
    //5

    @Test
    fun return3() {
        println("===========标签 return ==============")

        val list1 = listOf(1, 2, 3, 4, 5)

        list1.forEach(fun(i) {
            if (i == 4) return
            println(i)
        })
    }
    //===========标签 return ==============
    //1
    //2
    //3
    //5

    //================================break=====================================

    @Test
    fun break1() {
        println("===========标签 break@loop ==============")

        val list1 = listOf(1, 2, 3, 4)
        val list2 = listOf(4, 3, 2, 1)

        loop@ for (i in list1) {
            for (j in list2) {
                if (i == j) {
                    //结束循环
                    break@loop
                } else {
                    println("$i ::::: $j")
                }
            }
        }
    }
    //===========标签 break@loop ==============
    //1 ::::: 4
    //1 ::::: 3
    //1 ::::: 2

    @Test
    fun break2() {
        println("===========标签 break@loop ==============")

        val list1 = listOf(1, 2, 3, 4)
        val list2 = listOf(4, 3, 2, 1)

        for (i in list1) {
            loop@ for (j in list2) {
                if (i == j) {
                    //结束循环
                    break@loop
                } else {
                    println("$i ::::: $j")
                }
            }
        }
    }
    //===========标签 break@loop ==============
    //1 ::::: 4
    //1 ::::: 3
    //1 ::::: 2
    //2 ::::: 4
    //2 ::::: 3
    //3 ::::: 4

    //===============================continue======================================

    @Test
    fun continue1() {
        println("===========标签 continue@loop ==============")

        val list1 = listOf(1, 2, 3, 4)
        val list2 = listOf(4, 3, 2, 1)

        loop@ for (i in list1) {
            for (j in list2) {
                if (i == j) {
                    //进入下一轮循环
                    continue@loop
                } else {
                    println("$i ::::: $j")
                }
            }
        }
    }
    //===========标签 continue@loop ==============
    //1 ::::: 4
    //1 ::::: 3
    //1 ::::: 2
    //2 ::::: 4
    //2 ::::: 3
    //3 ::::: 4


    @Test
    fun continue2() {
        println("===========标签 continue@loop ==============")

        val list1 = listOf(1, 2, 3, 4)
        val list2 = listOf(4, 3, 2, 1)

        for (i in list1) {
            ssss@ for (j in list2) {
                if (i == j) {
                    //进入下一轮循环
                    continue@ssss
                } else {
                    println("$i ::::: $j")
                }
            }
        }
    }
    //===========标签 continue@loop ==============
    //1 ::::: 4
    //1 ::::: 3
    //1 ::::: 2
    //2 ::::: 4
    //2 ::::: 3
    //2 ::::: 1
    //3 ::::: 4
    //3 ::::: 2
    //3 ::::: 1
    //4 ::::: 3
    //4 ::::: 2
    //4 ::::: 1
}

测试二

class ExampleUnitTest2 {

    @Test
    fun test1() {
        for (i in 1..5) {
            for (j in listOf("a", "b", "c", "d")) {
                if (j == "c") {
                    println()
                    break
                } else {
                    print("$i===$j   ")
                }
            }
        }
    }
    //1===a   1===b   
    //2===a   2===b   
    //3===a   3===b   
    //4===a   4===b   
    //5===a   5===b   

    @Test
    fun test2() {
        loop@ for (i in 1..5) {
            for (j in listOf("a", "b", "c", "d")) {
                if (j == "c") {
                    println()
                    break@loop
                } else {
                    print("$i===$j   ")
                }
            }
        }
    }
    //1===a   1===b

    @Test
    fun test3() {
        for (i in 1..5) {
            loop@ for (j in listOf("a", "b", "c", "d")) {
                if (j == "c") {
                    println()
                    break@loop
                } else {
                    print("$i===$j   ")
                }
            }
        }
    }
    //1===a   1===b
    //2===a   2===b
    //3===a   3===b
    //4===a   4===b
    //5===a   5===b
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值