当前位置: 首页 > article >正文

【2024最新版Kotlin教程】Kotlin第一行代码系列第三课-流程控制

【2024最新版Kotlin教程】Kotlin第一行代码系列第三课-流程控制

想想就知道程序肯定有流程控制,因为现实生活也有。比如选择了坐地铁会怎样,坐公交会怎样。还有循环操作

一、流程控制示例代码:
fun main() {

    //=================================== if start==================================
    // 判断流程 if里最后一行是返回值,它可以作为表达式使用
    val score : Int = 80
    val state = if (score >= 60){
        "及格"
    } else {
        "不及格"
    }

    if (score >= 60){

    }
    // 如果内容只有一行,可以省略{}
    val state1 = if (score >= 60) "及格" else "不及格"

    // 多个if
    val state2 = if (score >= 80){
        "优秀"
    } else if (score >= 60){
        "及格"
    } else {
        "不及格"
    }

    /**
     * 注意kotlin没有三目运算符,可用下面的形式代替
     * 不过它有?:的用法
     */
    val str :String? = null
    // str为null就调用"我是最三"
    val str1 = str?:"我是最三"
    // 如果str不为null,就调用str.length方法,为null就调用"我是最三"
    val str2 = str?.length?:"我是最三"
    //=================================== if end==================================

    //===================================== when  start======================================
    /**
     * switch
     *
     * 它也是判断流程,超过3个判断就考虑用when了
     * 它功能就比较强大,if能做的,它都能做。
     */
    // 方式1:只有一个值匹配
    val x = 2
    when (x) {
        1 -> print("x = 1")
        2 -> print("x = 2")
        else -> {
            print("x既不是1也不是2")
        }
    }

    // 方式2:同时匹配多个值“,”隔开
    val y = 2
    when (y) {
        1,2 -> print("y == 1 or y == 2" )
        else -> {
            print("y既不是1也不是2")
        }
    }

    // 方式3:不写在when里面,每个流程的判断自己写
    val state3 = when {
        score>=80 -> {
            "第一行"
            println("这里有多行代码,加大括号")
            "优秀"  //最后一行是返回值
        }
        score>=60 -> "及格"  //只有一行可以不加大括号
        else -> "不及格"
    }

    /**
     * 选学内容
     */
    when (y) {
        in 1..10 -> print(" y in 1..10")//或者是 !in
        else -> {
            print("y不在1..9区间内")
        }
    }
    when (y) {
        is Int -> print(" y is Int") //Kotlin是Int类型的
        in 1..10 -> print(" y in 1..10")//或者是 !in
        else -> {
            print("y")
        }
    }
    //===================================== when  end======================================

    //===================================== for start==============================================
    /**
     * 循环流程,数组,集合中常用
     */
    // 方式1:用in来遍历,也叫做迭代,顺序
    val array = arrayOf(1, 2, 3)
    for (i in array) {
        println(i)
    }
    /**
     * 介绍下区间
     */
    // 左包右包区间  左闭右闭
    val array1 = 1..10
    // 创建半开半闭区间 需要用 until
    val array2 = 1 until 3
    println("左包右不包")
    for (i in array2) {
        println(i)
    }
    println("左包右包")
    // step 代表步长 1 2
    for (i in array1 step 2) {
        println(i)
    }

    // 方式2:逆序
    for (i in array.size -1 downTo 0){
        println("index = $i , value = ${array[i]}")
    }

    /**
     * 暂时选学,其实也是要学的,你可以当Api来查询使用
     */
    val list1= arrayListOf<String>("a","b","c","d")
    val list2 = ArrayList<String>()
    list2.add("a")
    list2.add("b")
    list2.add("c")
    list2.add("d")
    // 方式3:输出的是集合的下标
    for(index in list2.indices){
        println(index)
    }
    // 方式4:用forEach扩展函数,输出的是每一个值
    list2.forEach{
        println(it)
    }
    // 方式5:解构的形式,同时获取下标和值
    for((index,value) in list2.withIndex()){
        print("$index$value")
    }
    // 方式6:Iterator 一般都不用
    val iterator = list2.iterator()
    while (iterator.hasNext()){
        val value = iterator.next()
        print(value)
    }

    // 对应map遍历
    var map = HashMap<String,Int>()
    map["1"] = 233
    map["2"] = 666
    map["3"] = 999
    //查某个key对应的值
    println("map[\"1\"] = ${map["3"]}")
    //遍历
    for (kv in map){
        println("key=${kv.key},value=${kv.value}")
    }

    //===================================== for end==============================================




}

有兴趣的也可以看视频教程:

【2024最新版Kotlin教程】Kotlin第一行代码系列第三课-流程控制

整个kotlin教程项目源码结构图:

在这里插入图片描述有问题或者需要整个源码的私信我


http://www.kler.cn/a/381395.html

相关文章:

  • 摩尔线程嵌入式面试题及参考答案(2万字长文)
  • A014-基于Spring Boot的家电销售展示平台设计与实现
  • 关于我的编程语言——C/C++——第四篇(深入1)
  • 程序中怎样用最简单方法实现写excel文档
  • 在K8s平台部署个人博客
  • Prim算法与Dijstra算法
  • 解决 Spring 异步处理中的 JDK 动态代理问题及相关错误分析
  • CCS下载安装(以12.3.0版本为例)
  • 学习threejs,导入OBJ格式的模型
  • BackTrader-Commission 06
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第五题
  • fpga引脚约束问题
  • springboot集成onlyoffice(部署+开发)
  • 风宇博客全站HTTPS配置
  • 【图论】——理论基础总结
  • 【力扣打卡系列】移动零(双指针)
  • ESRALLY安装与使用
  • 「C/C++」C/C++的区别
  • C#编程:VSTO在Excel工作表中输出List数据
  • c++的list类
  • 「Mac畅玩鸿蒙与硬件22」鸿蒙UI组件篇12 - Canvas 组件的动态进阶应用
  • 免费且强大的PDF转换工具——PDFgear
  • 戴尔电脑 Bios 如何进入?Dell Bios 进入 Bios 快捷键是什么?
  • VSCODE新版本无法remote ssh到老系统Linux上的问题
  • C# 实现读取Excel文件并设置单元格计算公式再保存
  • Java学习Day57:碧水金睛兽!(Spring Cloud微服务1.0)