【Kotlin 初学者】程序的逻辑控制

简介: 程序的逻辑控制程序的执行语句主要分为三种:顺序语句:一条接着一条顺序执行下去,程序代码默认就是顺序语句。条件语句:if 和 when循环语句:for循环 和 while循环

作者简介:CSDN博客专家、华为云享专家认证

系列专栏:Kotlin 初学者

学习交流:三人行必有我师焉;择其善者而从之,其不善者而改之。


程序的逻辑控制


程序的执行语句主要分为三种:


  • 顺序语句:一条接着一条顺序执行下去,程序代码默认就是顺序语句。


  • 条件语句:if 和 when


  • 循环语句:for循环 和 while循环


条件语句


       Kotlin 中的条件语句主要有两种实现方式:if 和 when。


if


       Kotlin 编程语言流程控制语句通过程序设定一个或多个条件语句来设定:


  • 在条件为 true 时执行指定程序代码


  • 在条件为 false 时执行其他指定代码


实践


fun main() {
    val number = 83
    val str = if (0 < number && number <= 59) {
        //0-59范围
        "$number 不及格"
    } else if (59 < number && number <= 75) {
        "$number 及格"
    } else if (75 < number && number <= 85) {
        "$number 良好"
    } else {
        "$number 优秀"
    }
    println(str)
}


微信图片_20220524165757.png


 从上面可以看出,Kotlin 中的 if 语句跟 Java中的 if 语句相差不大。


Kotlin if 额外功能:


       if 有个返回值,返回值就是语句每一个条件中最后一行代码的返回值。如上面例子:val str = "良好"


if..in


微信图片_20220524165837.png


警告:两次比较应转换为 range 检查


range 表达式


       in x..y,in关键字用来检查某个值是否在指定区间x-y(包含y)之内


实践


1.    //if..in
    //in x..y,in关键字用来检查某个值是否在指定区间x-y(包含y)之内。
    val strRange = if (number in 1..59) {
        //0-59范围
        "$number 不及格"
    } else if (number in 60..75) {
        "$number 及格"
    } else if (number in 76..85) {
        "$number 良好"
    } else {
        "$number 优秀"
    }
    println(strRange)


运行结果跟上面一致,但是代码感觉简洁了很多。


微信图片_20220524165947.png


if..!in


       !in x..y,in关键字用来检查某个值是否不在指定区间x-y(包含y)之内。


    val number2 = 81
    //这个就是取反了。
    //!in x..y,in关键字用来检查某个值是否不在指定区间x-y(包含y)之内。
    if (number2 !in 70..80){
        println("$number2,不在70-80范围")
    }else{
        println("$number2,在范围")
    }


微信图片_20220524170029.png


when


  • 允许你编写条件式,在某个条件满足时,执行对应的代码
  • 只要代码包含else if分支,都建议改用when

根据上面的实例,对else if分支调整。


实践


fun main() {
    val number = 70
    val s = when(number){
        in 0..59->"不及格"
        in 60..75->"及格"
        in 76..85->"良好"
        else -> "优秀"
    }
    println(s)
}


微信图片_20220524170111.png


这个就类似Java中的switch-case。但是switch-case那么繁琐,也不需要加break。


循环语句


Java中主要有两种循环语句:for 循环和 while 循环


Koltin也提供了这两种循环。


  • while循环不管在语法还是在使用技巧上都和Java基本一致。


  • for循环改动比较大


  • for-i在Kotlin中被移除。


  • for-each循环被加强,变成for-in循环。


for-in循环


实践


    //for-in简单循环,区间范围[3,8]
    for (number in 3..8){
        println(number)
    }


微信图片_20220524170325.png


until 关键字


       使用 until关键字 创建一个左闭右开的区间。


实践


    //使用until关键字创建一个左闭右开的区间。
    //区间范围[3,8)
    for (number in 3 until 8){
        println(number)
    }


微信图片_20220524170405.png


step 关键字


       使用 step 关键字跳过一些元素。for-in循环每次执行循环时会在区间范围递增1,如Java中 for-i 的i++。


实践


    //使用 step 关键字跳过一些元素。
    //如Java中 for-i 的i = i+2。
    for (number in 3 until 8 step 2) {
        println(number)
    }
    println("-------")
    //使用 step 关键字跳过一些元素。
    //如Java中 for-i 的i = i+3。
    for (number in 3 until 8 step 3) {
        println(number)
    }


微信图片_20220524170448.png


downTo 关键字


       使用 downTo 关键字创建一个降序区间。


    //使用 downTo 关键字创建一个降序区间。
    //区间范围[8,3]
    for (number in 8 downTo 3) {
        println(number)
    }


微信图片_20220524170522.png


foi-in 循环集合


       有关集合的创建咱们后面一起学哈。


    //for-in集合
    val items = listOf("字节", "腾讯", "阿里巴巴", "百度")
    for (item in items) {
        println(item)
    }
    println("-------")
    for (index in items.indices) {
        println("item at $index is ${items[index]}")
    }


微信图片_20220524171551.png


while循环


while简单循环


实践

    //while循环
    var num = 1
    while (num<5){
        println("$num,while循环")
        num++
    }


微信图片_20220524171630.png


do...while循环


       do…while 循环 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。


       do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。


实践


    //do..while循环
    var num = 5
    do {
        println("$num,do..while循环")
        num--
    } while (num > 0)


微信图片_20220524171726.png


Kotlin 控制语句


  • return : 默认从最直接包围它的函数或者匿名函数返回


  • break : 终止使用它的循环


  • continue : 继续下一次使用它的循环


return 语句


       默认从最直接使用它的函数或者匿名函数返回。这个跟Java类似。


实践


fun main() {
    //return
    println(userInfo("ShuaiCi",18))
}
fun userInfo(name:String,age:Int):String{
    //具名函数这里要加return
    return "$name-今年:$age"
}


微信图片_20220524171904.png


break 语句


       终止使用它的循环


实践


    //break
    for (number in 3..8) {
        if (number > 6) break//number>6跳出循环
        println(number)
    }


微信图片_20220524171951.png


continue 语句


       继续下一次使用它的循环


实践


    for (number in 3..8) {
        println("$number,start")
        if (number ==4 ) continue//跳过本次循环,直接执行下一次循环
        if (number > 6) break//number>6跳出循环
        println("$number,end")
    }

微信图片_20220524172030.png


小结


       优先使用for..in,简单好用,足够覆盖大部分场景。

       如果特殊场景无法实现,那么就使用while循环进行补充即可。

       看完了上手练练,光看短时间能记住,时间长不用就忘记了,还要再看一遍,还不如自己上手练一下。


相关文章
|
Java Android开发 Kotlin
【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )
【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )
699 0
【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )
|
移动开发 小程序 前端开发
直播回放:快速上手,使用 Kotlin 把支付宝小程序装进自己的 App
写一个 Android App 或许不难,但企业对于移动应用的要求愈来愈高,不只要求开发速度、稳定度、质量等。
1764 0
直播回放:快速上手,使用 Kotlin 把支付宝小程序装进自己的 App
|
移动开发 运维 小程序
快速上手,使用 Kotlin 把支付宝小程序装进自己的 App
8月14日下午3点,快速构建一个超级 App,具备动态扩展的架构设计,甚至能够在 App 中自启动小程序。
1048 0
快速上手,使用 Kotlin 把支付宝小程序装进自己的 App
|
Java Android开发 Kotlin
Kotlin强势开发一个Android(安卓)程序
一、以IDEA为例,创建一个安卓应用 二、选择安卓,信息填一填 三、点击下一步 四、在Add an Activity to Mobile的时候选择一个基本的Activity(Basic Activity) 五...
1179 0
|
Kotlin
kotlin高阶函数开发一个程序,统计文本中字符串出现的个数
一、高阶函数是Kotlin的核心部分,下面来使用下高阶函数写一个程序 注意:我这里的File使用的是:与src同级的文件,你可以根据自己的需要,修改文件地址 代码实例 package net.
1563 0
Kotlin导出可执行的程序
一、在用Kotlin写完程序后,怎么导出使他成为可执行的程序。 首先需要添加两行代码 /**添加两行代码,指出导出的是程序*/ apply plugin: 'application' //尽管包名为Counter.
1453 0
|
Android开发 Kotlin
x3d
|
Java PHP
用Kotlin改写PHP程序是什么样的体验
学Kotlin其实要看:http://kotlinlang.org/docs/kotlin-docs.pdf 在线版是不完整的!!!少了一些章节,会有点难看懂后面的文档。 我选择了WordPress里的错误消息管理类wp-error.php为对象,没有依赖其他具体场景和类,所以比较适合移植和对比。
x3d
1319 0
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
531 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
**Kotlin中的`by lazy`和`lateinit`都是延迟初始化技术。`by lazy`用于只读属性,线程安全,首次访问时初始化;`lateinit`用于可变属性,需手动初始化,非线程安全。`by lazy`支持线程安全模式选择,而`lateinit`适用于构造函数后初始化。选择依赖于属性特性和使用场景。**
1112 5
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?