首页 > 其他分享 >【Kotlin】流程控制

【Kotlin】流程控制

时间:2024-04-06 11:13:58浏览次数:22  
标签:控制 fun Kotlin 流程 else var items println main

1 选择结构

​ Kotlin 中选择结构主要包含 if -else、when 语句,并且可以返回结果。

1.1 if-else

1.1. 条件选择

fun main() {
    var score = 85
    if (score >= 90) {
        println("优秀")
    } else if (score >= 80) {
        println("良好")
    } else if (score >= 60) {
        println("及格")
    } else {
        println("不及格")
    }
}

​ 说明:如果 {} 里只有一条语句,可以省略 {},if-else 语句可以嵌套使用,其他流程控制语句也可以嵌套使用。

1.1.2 条件返回

​ if-else 语句也可以作为结果判断。

1)单行案例

fun main() {
    var score = 85
    var res = if (score > 60) "及格" else "不及格"
}

2)多行案例

fun main() {
    var score = 85
    var res = if (score > 60) {
        println("恭喜您通过考试")
        "及格"
    } else {
        println("欢迎下次光临")
        "不及格"
    }
    println(res) // 及格
}

​ 打印结果如下。

img

​ 说明:返回结果需要放在 {} 中的最后一行,否则返回的是 Unit。

1.2 when

1.2.1 条件选择

​ when 语句与 Java 中 switch 语句类似。

1)简单案例

fun main() {
    var grade = 'B'
    when(grade) {
        'A' -> {
            println("优秀")
        }
        'B' -> {
            println("良好")
        }
        'C' -> {
            println("及格")
        }
        else -> {
            println("不及格")
        }
    }
}

​ 说明:如果 {} 里只有一条语句,可以省略 {}。

2)多分支合并

fun main() {
    var grade = 'B'
    when(grade) {
        'A','B','C' -> println("及格")
        else -> println("不及格")
    }
}

1.2.2 条件返回

​ when 语句也可以作为结果判断。

1)简单案例

fun main() {
    var grade = 'B'
    var res = when(grade) {
        'A' -> {
            println("你真棒")
            "优秀"
        }
        else -> {
            println("加油")
            "及格"
        }
    }
    println(res)
}

​ 打印结果如下。

img

​ 说明:返回结果需要放在 {} 中的最后一行,否则返回的是 Unit。

2)范围分支

fun main() {
    var score = 85
    var res = when(score) {
        in 90..100 -> "优秀"
        in 80..<90 -> "良好"
        in 60..<80 -> "良好"
        else -> "不及格"
    }
    println(res) // "良好"
}

2 循环结构

​ Kotlin 中循环结构主要包含 for、while、do-while 循环结构。另外,continue 语句可以控制跳过某次循环,break 语句可以控制跳出循环体。

2.1 for

​ for 循环可以对任何提供迭代器(iterator)的对象进行遍历。

1)遍历整数范围(IntRange、IntProgression)

fun main() {
    for (i in 1..5) {
        println(i) // 打印: 1、2、3、4、5
    }
    for (i in 5 downTo 1) {
        println(i) // 打印: 5、4、3、2、1
    }
    for (i in 1..<5 step 2) {
        println(i) // 打印: 1、3
    }
}

2)遍历数组 / 列表

fun main() {
    var items = arrayOf("aa", "bb", "cc")
    // var items = listOf("aa", "bb", "cc")
    for (item in items) {
        println(item) // 打印: aa、bb、cc
    }
    for (index in items.indices) {
        println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
    }
    for ((index, item) in items.withIndex()) {
        println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
    }
}

2.2 while

fun main() {
    var i = 0
    while(i < 5) {
        println(i)
        i++
    }
}

2.3 do-while

fun main() {
    var i = 0
    do {
        println(i)
        i++
    } while (i < 5)
}

2.4 continue

​ 使用 continue 语句,可以跳过循环体中 continue 后面的语句,继续执行下一轮循环。

1)单层循环

fun main() {
    for (i in 1..5) {
        if (i == 3) continue
        println(i) // 打印: 1、2、4、5
    }
}

2)多层循环

fun main() {
    label@ for (i in 1..3) {
        for (j in 4..6) {
            if (j == 5) continue@label
            println("($i,$j)") // 打印: (1,4)、(2,4)、(3,4)
        }
    }
}

​ 说明:label 可以修改为任何符合变量命名规范的名字。

2.5 break

​ 使用 break 语句,可以跳出循环体,继续执行循环体后面的语句。

1)单层循环

fun main() {
    for (i in 1..5) {
        if (i == 3) break
        println(i) // 打印: 1、2
    }
}

2)多层循环

fun main() {
    label@ for (i in 1..3) {
        for (j in 4..6) {
            if (j == 5) break@label
            println("($i,$j)") // 打印: (1,4)
        }
    }
}

​ 说明:label 可以修改为任何符合变量命名规范的名字。

​ 声明:本文转自【Kotlin】流程控制

标签:控制,fun,Kotlin,流程,else,var,items,println,main
From: https://www.cnblogs.com/zhyan8/p/18115117

相关文章

  • 【Kotlin】函数
    1常规函数1.1无参函数funmain(){myFun()}funmyFun(){println("myFun")//打印:myFun}1.2有参函数​1)常规调用funmain(){myFun("myFun")//打印:myFun}funmyFun(str:String){println(str)}​2)形参指定默认值funmai......
  • 比nestjs更优雅的ts控制反转策略-依赖查找
    一、Cabloy5.0内测预告Cabloy5.0采用TS对整个全栈框架进行了脱胎换骨般的大重构,并且提供了更加优雅的ts控制反转策略,让我们的业务开发更加快捷顺畅1.新旧技术栈对比:后端前端旧版js、egg2.0、mysqljs、vue2、framework7新版ts、egg3.0、多数据库兼容(支持mysql......
  • python流程控制
    条件语句If语句If-else语句If-elif-else语句If嵌套循环语句While语句for语句 while循环嵌套for循环嵌套......
  • 第3章 Internel 控制消息协议(ICMP)
    目录第3章Internel控制消息协议(ICMP)1.ICMPv4简述2.ICMPv4初始化2.1ICMPv4收包处理函数初始化2.2ICMPv4内核模块初始化3.附录第3章Internel控制消息协议(ICMP)1.ICMPv4简述有的教材认为ICMP是第三层协议(网络层),有的认为是第四层协议(传输控制层),我更倾向于它是......
  • Spring/SpringBoot/SpringCloud Mybatis 执行流程
    在后续分析Mybatis流程中代码的可能会用到IDEAdebug技巧:条件断点代码断点,右键勾选弹窗Condition:写入表达式回到上一步:Java动态代理实现InvocationHandler接口:packagecom.lvyuanj.core.test;importcom.lvyuanj.core.model.User;importorg.apache.......
  • [转帖]shell编程-流程控制-if语句
    1.单分支if条件语句单分支if条件语句有三种写法:if[条件判断式];then操作fi或者if[条件判断式]then操作fi或者if[条件判断式];then操作;fi说明:只有条件成立,才执行相应的操作。示例:if[aa==aa];thenechoyes;fi1注意要点:if语句使用......
  • 一键部署 SpringCloud 微服务,这套流程值得学习一波儿!
    文章目录前言1、开发者将代码PUSH到Git2、通过Jenkins部署,自动到Git上PULL代码2.1、配置SSH-KEY2.1.1、生成/添加SSH公钥2.1.2、将公钥配置到git平台2.1.3、测试2.2、配置Jenkins的pipeline自动clone代码2.2.1、Jenkins创建任务2.2.2、测试拉代码流程3、通过maven......
  • git版本控制工具
    一、git工具介绍1.版本控制的概念与分类        版本控制是一种管理文件变更的技术,允许开发者记录文件或一组文件随时间的变化,以便能够恢复到先前的状态、查看历史更改、对比不同版本之间的差异,以及协同工作。版本控制系统主要有两种分类:集中式版本控制系统(如SVN):......
  • 基于强化学习(Reinforcement Learning)的机器人控制策略
    强化学习(ReinforcementLearning,RL)是机器学习的一个分支,主要研究智能体如何在与环境的交互中通过学习策略以达成回报最大化或实现特定目标的问题。它不是某一种特定的算法,而是一类算法的统称!!! 强化学习的目标是让软件智能体在特定环境中能够采取回报最大化的行为。这通常是通......
  • 极域电子教室解除控制
    文章目录前言法一、法三、前言学校机房里的极域很烦人,会影响到我们的工作下面分享几个可以破解极域的方法。法一、(推荐指数:3)右键桌面图标,点击文件所在位置。将程序全选并右键删除。点击重试点击跳过(若对话框没有消失则重复2)win+l,重新登陆好好工作吧#缺点:老师......