Kotlin when

与编写许多 if..else 表达式相比,您可以使用 when 表达式,它更易读。

它用于选择要执行的多个代码块中的一个:

示例

使用星期几的编号来计算星期几的名称:

val day = 4

val result = when (day) {
1 -> "Monday"
2 -> "Tuesday"
3 -> "Wednesday"
4 -> "Thursday"
5 -> "Friday"
6 -> "Saturday"
7 -> "Sunday"
else -> "Invalid day."
}
println(result) // 输出 "Thursday" (day为4)

when 表达式类似于 Java 中的 switch 语句。

工作原理如下:

  1. when 变量(day)进行一次评估。
  2. day 变量的值与每个“分支”的值进行比较。
  3. 每个分支以一个值开始,后跟一个箭头(->)和一个结果。
  4. 如果匹配,则执行相关联的代码块。
  5. 使用 else 指定如果没有匹配要运行的代码。

在上面的示例中,day 的值为 4,因此将打印 "Thursday"

Kotlin While 循环

循环可以在达到指定条件时执行一段代码块。循环非常方便,因为它们节省时间,减少错误,并使代码更易读。

Kotlin while 循环

while 循环通过条件为 true 时循环执行一段代码块:

语法

while (condition) {
// 要执行的代码块
}

在下面的示例中,只要计数器变量 i 小于 5,循环中的代码将一遍又一遍地运行:

示例

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

注意:不要忘记增加条件中使用的变量,否则循环将永远不会结束。

Kotlin do..while 循环

do..while 循环是 while 循环的变体。这个循环会在检查条件是否为 true 之前执行一次代码块,然后只要条件为 true,它就会重复执行循环。

语法

do {
// 要执行的代码块
} while (condition);

下面的示例使用了 do/while 循环。即使条件为 false,该循环也会至少执行一次,因为在测试条件之前会执行代码块:

示例

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

以上是关于 Kotlin 中 when 表达式以及 whiledo..while 循环的详细介绍。这些功能使得编写和理解条件和循环更加简单和直观。

Kotlin Break and Continue

Kotlin Break

break语句用于跳出循环。

在以下示例中,当 i 等于 4 时跳出循环:

var i = 0
while (i < 10) {
println(i)
i++
if (i == 4) {
break
}
}

Kotlin Continue

continue语句用于在循环中的某一次迭代中跳过特定条件的代码,并继续执行下一次迭代。

在以下示例中,跳过值为 4 的情况:

var i = 0
while (i < 10) {
if (i == 4) {
i++
continue
}
println(i)
i++
}

Kotlin Arrays

Kotlin 数组

数组用于在单个变量中存储多个值,而不是为每个值创建单独的变量。

要创建一个数组,请使用 arrayOf() 函数,并在其中放置逗号分隔的值列表:

val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")

访问数组元素

您可以通过引用索引号(在方括号内)来访问数组元素。

在这个例子中,我们访问 cars 数组中第一个元素的值:

val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
println(cars[0])
// 输出 Volvo

注意:数组索引从 0 开始:[0] 是第一个元素,[1] 是第二个元素,依此类推。

修改数组元素

要更改特定元素的值,请引用索引号:

cars[0] = "Opel"

例如:

val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
cars[0] = "Opel"
println(cars[0])
// 现在输出 Opel 而不是 Volvo

数组长度 / 大小

要查找数组中有多少个元素,请使用 size 属性:

val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
println(cars.size)
// 输出 4

检查元素是否存在

您可以使用 in 运算符来检查数组中是否存在元素:

val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
if ("Volvo" in cars) {
println("存在!")
} else {
println("不存在。")
}

遍历数组

通常在处理数组时,您需要遍历所有元素。

您可以使用 for 循环遍历数组元素,关于这一点,您将在下一章学习更多。

以下示例输出 cars 数组中的所有元素:

val cars = arrayOf("Volvo", "BMW", "Ford", "Mazda")
for (x in cars) {
println(x)
}

以上是关于 Kotlin 中 breakcontinue 以及基本数组操作的详细介绍。这些功能使得控制循环流程和管理多个数据项变得更加灵活和高效。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

Kotlin 控制流和数组操作详解的更多相关文章

  1. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  2. MongoDB各种查询操作详解

    这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下   一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...

  3. VC++常用数据类型及其操作详解

    原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...

  4. js数组方法详解

    Array对象的方法-25个 /*js数组方法详解 */ /* * 1 concat() 用于连接多个数组或者值-------------- * 2 copyWithin() 方法用于从数组的指定位置 ...

  5. JavaScript数组方法详解

    JavaScript数组方法详解 JavaScript中数组的方法种类众多,在ES3-ES7不同版本时期都有新方法:并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中 ...

  6. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

  7. shell字符串操作详解

    shell字符串操作详解的相关资料. 1.shell变量声明的判断  表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...

  8. memcached 命令操作详解

    memcached 命令操作详解 一.存储命令 存储命令的格式: <command name> <key> <flags> <exptime> < ...

  9. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

  10. MySQL 操作详解

    MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...

随机推荐

  1. Mac 上切换 node 版本总结

    Mac 上切换 node 版本总结 背景 在做项目的时候,往往会遇到老项目没有升级的问题,node环境版本比较低,自己电脑安装或者新项目安装了最新版本的 node 环境,那么既要支持老版本的使用也要支 ...

  2. QQ、支付宝、微信收款码三合一

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` QQ.支付宝.微信收款码三合一 日期:2018-8-24 ...

  3. .Net8 AddKeyedScoped键值key注册服务异常

    异常描述:This service descriptor is keyed. Your service provider may not support keyed services. 场景:.Net ...

  4. HTTP常见状态及其含义

    HTTP常见状态及其含义 200: 请求成功 301: 被请求的资源已永久移动到新位置 302: 请求的资源现在临时从不同的URI响应请求 400: 1,语义有误当前请求无法被服务器理解2,请求参数有 ...

  5. map(STL容器)

    map 一种基于红黑树(不需了解)的关联树容器,支持快速的插入,查找和删除操作,并保持了内部元素的有序性,其中每一个元素都有一个键和一个与之关联得值组成. 可以形象的理解为一个转换器,给它一个东西(变 ...

  6. 颠覆传统编程,用ChatGPT十倍提升生产力

    我们即将见证一个新的时代!这是最好的时代,也是最坏的时代! 需求背景 背景: 平时会编写博客,并且会把这个博客上传到github上,然后自己买一个域名挂到github上. 我平时编写的博客会有一些图片 ...

  7. 处理 3d 视频的简单理论基础

    背景 公司产品需要满足一些带有3d功能的应用场景,需要需要懂得如何处理3d信号.之前在调试以前产品的时候,发现处理3d信号的时候,是由2个画面叠加起来的. 导言 3D视频(或3D信号)为什么是两个画面 ...

  8. P9376 题解

    首先考虑怎么暴力. 考虑把每个数进行 \(B\) 进制分解,然后我们惊奇的发现这两个操作就是把最低位去掉和往最低位后面插入一个数. 然后我们顺藤摸瓜,把每个数的分解扔到 Trie 树上,我们发现我们要 ...

  9. sqlite相关

    前言 本文记录一些sqlite相关笔记,随时更新. 正文 时间函数 datetime() -- 当前时间 2022-03-24 17:32:43 select datetime('now'); --2 ...

  10. 解码技术债:AI代码助手与智能体的革新之道

    技术债 技术债可能来源于多种原因,比如时间压力.资源限制.技术选型不当等.它可以表现为代码中的临时性修补.未能彻底解决的设计问题.缺乏文档或测试覆盖等.虽然技术债可以帮助快速推进项目进度,但长期来看, ...