Kotlin while 和 for 循环(九)

embedded/2024/9/24 21:10:18/

导读大纲

    • 1.1 while 和 for 循环
      • 1.1.1 while 循环
      • 1.1.2 范围和级数:for循环

1.1 while 和 for 循环

  1. Kotlin 中的迭代与 Java、C# 或其他语言中的迭代非常相似
    • while 循环与其他语言中的传统形式相同, 只需简单了解一下即可
    • 还会发现 for 循环,其写法为 for ( in )
      1. 是不是会想起 Java 的 for-each 循环

1.1.1 while 循环

  1. Kotlin 有 while 循环和 do-while 循环,可能对其他编程语言的语法并不陌生
    • do-while 与 while 的区别只在于前者会无条件执行一次循环体
kotlin">while (condition) {if (shouldExit) break
}
do {if (shouldSkip) continue} while (condition)
  1. 对于嵌套循环,Kotlin 允许您指定一个标签
    • 标签是一个标识符,后跟 at 符号(@)
    • 然后在使用 break 或 continue 时引用该标签
    • <1> 用 outer 标签标记循环
    • <2> break和 continue不带标签, 针对的就是离它最近的那个循环体
    • <3> break和 continue使用标签, 针对指定循环,即这里针对最外层循环体
kotlin">outer@ while (outerCondition) {                // <1>while (innerCondition) {if (shouldExitInner) break             // <2>if (shouldSkipInner) continue          // <2>if (shouldExit) break@outer            // <3>if (shouldSkip) continue@outer         // <3>// ...}// ...
}

1.1.2 范围和级数:for循环

  1. 正如我们刚才提到的,在 Kotlin 中没有 C 风格的 for 循环

    • 初始化一个变量,在循环的每一步中更新其值
      1. 在值达到某个界限时退出循环
    • 比如C语言中经典的for(int i = 0; i < 10; i++)循环样式
      1. 为了取代此类循环,Kotlin 使用 range 的概念
  2. range本质上只是两个值(通常是数字)之间的间隔: 即起点和终点

    • 可以使用两个点来书写它: val oneToTen = 1…10
    • 请注意,在 Kotlin 中,这些范围是封闭的或包含的
      1. 这意味着总是包含左右两个边界值
        title
    • 对于整数范围,最基本的操作就是循环遍历所有数值
      1. 如果可以遍历一个范围内的所有值,那么这个范围就称为级数
  3. 让我们用整数范围来玩 Fizz-Buzz 游戏

    • 玩 "Fizz-Buzz "游戏时,玩家轮流递增计数
      1. 用"fizz"代替任何能被3整除的数字
      2. 用 "buzz "代替任何能被 5 整除的数字
      3. 如果一个数字同时是 3 和 5 的倍数,就说: “Fizz-Buzz”
    • <1> 遍历整数范围 1…100
kotlin">fun fizzBuzz(i: Int) = when{i % 15 == 0 -> "FizzBuzz"i % 3 == 0 -> "Fizz"i % 5 == 0 -> "Buzz"else-> "$i "
}
fun main() {for (i in 1..100){           // <1>fizzBuzz(i)}
}
  1. 让我们从 100 开始倒数,只包括偶数
    • <1> 你正在迭代一个有步长的级数,这样就可以跳过一些数字
      1. 这里100 downTo 1 是一个向后的级数(步长默认为1),step 将步进改为 2
    • 简单说Kotlin中 1…100 和 100 downTo 1来控制增长的方向
      1. 前者是正向, 后者是负向, 同时使用 step 来设置步进值
kotlin">fun main() {for (i in 100 downTo 1 step 2){          // <1>println(fizzBuzz(i))}
}
  1. 上面使用的是range都是全包围, 即包含左右两个边界值
    • 还可以使用"…< size"半包围语法来排除右侧边界值
      1. 等价于"… size-1"
kotlin">@OptIn(ExperimentalStdlibApi::class)
fun main() {for (i in 1..<5) {println(i)}
}
====================================
1
2
3
4

http://www.ppmy.cn/embedded/116261.html

相关文章

【图像匹配】基于SIFT算法的图像匹配,matlab实现

博主简介&#xff1a;matlab图像代码项目合作&#xff08;扣扣&#xff1a;3249726188&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于基于SIFT算法的图像匹配&#xff0c;用matlab实现。 一、案例背景和算法介绍 本…

频率色散效应及其与时间选择性衰落信道的联系

频率色散效应&#xff08;Frequency Dispersion Effect&#xff09;是在无线通信中&#xff0c;由于信道中的多普勒效应引起的现象&#xff0c;它会导致接收信号频谱的扩展和频率上的变化。该效应与信道的时间变化有关&#xff0c;是时间选择性衰落信道&#xff08;time-select…

新峰商城之分类三级联动实现

新峰商城是一个开源电子商务网站&#xff08;SpringBoot项目&#xff09;&#xff0c;本文主要简述它的商品分类中三级联动功能的实现。 一、多层级联动效果的常见场景 二、三级联动或者更多层级的数据联动是常见交互方式&#xff0c;它可以提升用户体验&#xff0c;限制用户随…

自学前端的正确姿势是...

师傅带进门&#xff0c;修行在个人。 在前端自学成才的道路上&#xff0c;有些人走的很快&#xff0c;有些人却举步维艰。 为什么会这样子呢&#xff1f;因为他们没有掌握自学前端的正确姿势。 在介绍应该要怎样自学前端之前&#xff0c;首先来看下&#xff0c;自学前端容易…

concurrent.futures.ThreadPoolExecutor多线程处理文件

背景&#xff1a;适用于IO密集型任务。 应用举例&#xff1a; 数据库查询。 文件系统操作。 网络服务器处理请求。 比如大批量从某个服务获取信息。 代码举例&#xff1a; def worker_core(json_data): #调用GPT获取数据response send_chat_request(system"You a…

Android 后台服务之Persistent 属性

在 Android 开发中,有时我们需要后台服务持续运行,以保持应用的某些功能。例如,音乐播放器需要在后台播放音乐,或者健康应用需要持续跟踪用户的运动数据。后台服务是 Android 中的一种组件,它不与用户界面交互,能够在后台执行长时间运行的任务。由于 Android 系统的资源管…

Windows 安全事件日记中账户登录失败问题处理

一 window系统安全日记 在使用 Windows 系统时&#xff0c;我们可能会在安全事件日记中发现账户登录失败的记录。当遇到这种情况时&#xff0c;不必惊慌。 今天在检查自己的操作系统日记时发现系统的安全事件记录存在大量的-帐户登录失败日记如下&#xff1a; 从上次清除日记到…

产教专家共议数字时代下的数据思维人才培养

8 月 25 日至 26 日&#xff0c;"数据思维人才培养论坛"在大湾区大学松山湖校区圆满落幕。此次论坛作为对两个月前新时代计算机本科教育论坛上相关议题的深化&#xff0c;由中国人民大学杜小勇教授与大湾区大学李晓明教授携手发起。和鲸科技创始人、CEO 范向伟先生受…