【Kotlin】流程控制
1 选择结构
Kotlin 中选择结构主要包含 if -else、when 语句,并且可以返回结果。
1.1 if-else
1.1. 条件选择
fun main() {var score = 85if (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 = 85var res = if (score > 60) "及格" else "不及格"
}
2)多行案例
fun main() {var score = 85var res = if (score > 60) {println("恭喜您通过考试")"及格"} else {println("欢迎下次光临")"不及格"}println(res) // 及格
}
打印结果如下。
![]()
说明:返回结果需要放在 {} 中的最后一行,否则返回的是 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)
}
打印结果如下。
![]()
说明:返回结果需要放在 {} 中的最后一行,否则返回的是 Unit。
2)范围分支
fun main() {var score = 85var 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}
}
2.2 while
fun main() {var i = 0while(i < 5) {println(i)i++}
}
2.3 do-while
fun main() {var i = 0do {println(i)i++} while (i < 5)
}
2.4 continue
使用 continue 语句,可以跳过循环体中 continue 后面的语句,继续执行下一轮循环。
1)单层循环
fun main() {for (i in 1..5) {if (i == 3) continueprintln(i) // 打印: 1、2、4、5}
}
2)多层循环
fun main() {label@ for (i in 1..3) {for (j in 4..6) {if (j == 5) continue@labelprintln("($i,$j)") // 打印: (1,4)、(2,4)、(3,4)}}
}
说明:label 可以修改为任何符合变量命名规范的名字。
2.5 break
使用 break 语句,可以跳出循环体,继续执行循环体后面的语句。
1)单层循环
fun main() {for (i in 1..5) {if (i == 3) breakprintln(i) // 打印: 1、2}
}
2)多层循环
fun main() {label@ for (i in 1..3) {for (j in 4..6) {if (j == 5) break@labelprintln("($i,$j)") // 打印: (1,4)}}
}
说明:label 可以修改为任何符合变量命名规范的名字。
相关文章:
【Kotlin】流程控制
1 选择结构 Kotlin 中选择结构主要包含 if -else、when 语句,并且可以返回结果。 1.1 if-else 1.1. 条件选择 fun main() {var score 85if (score > 90) {println("优秀")} else if (score > 80) {println("良好")} else if (score &…...
Devc++ Easyx 实现 瓦片地图编辑数据导入游戏
导出的DLC 直接放入 exe 同文件夹下即可自动读取。 // 程序:DLC 自动读取加载框架示例 // 作者:民用级脑的研发记录 // 邮箱:1309602336qq.com // 编译环境:Devc/VC 2010/Visual Studio 2022,EasyX_20220901/Easyx_202…...
去年面试的运维开发面试题二
VPN有哪些协议,不同协议之间有何区别? 2.内部组网通常使用哪些类型的网段,两个不同网段如何通信? 3.Linux中绝对路径,相对路径的区别 4. Linux如何添加磁盘,扩容系统文件? 5. Linux如何查看进程…...
【Unity编辑器扩展】Unity编辑器主题颜色设置工具
可以用来应用和自定义你的Unity编辑器。14个主题可供选择。轻松创建自己的主题。 主题展示:...
精美的WordPress外贸独立站模板
WordPress外贸独立站主题 简洁实用的WordPress外贸独立站主题,适合时尚服装行业搭建wordpress企业官网使用。 https://www.jianzhanpress.com/?p4999 简洁wordpress独立站模板 绿色精美、简洁大气的wordpress外贸独立网站模板 https://www.jianzhanpress.com/?…...
说一下 JVM 运行时数据区 ?
目录 一、程序计数器(Program Counter Register) 二、Java 虚拟机栈(Java Virtual Machine Stacks) 三、本地方法栈(Native Method Stack) 四、Java 堆(Java Heap) 五、方法区&…...
外泌体相关基因肝癌临床模型预测——2-3分纯生信文章复现——02.数据格式整理(1)
内容如下: 1.外泌体和肝癌TCGA数据下载 2.数据格式整理 3.差异表达基因筛选 4.预后相关外泌体基因确定 5.拷贝数变异及突变图谱 6.外泌体基因功能注释 7.LASSO回归筛选外泌体预后模型 8.预后模型验证 9.预后模型鲁棒性分析 10.独立预后因素分析及与临床的…...
Python 内存管理和优化之循环引用
更多Python学习内容:ipengtao.com Python 是一种高级动态编程语言,其内存管理由解释器自动完成。在大多数情况下,Python 的内存管理是透明的,开发者不需要过多地关注。然而,在处理大型数据结构或长时间运行的应用程序时…...
「Kafka」监控、集成篇
Kafka-Eagle 监控 Kafka-Eagle 框架可以监控 Kafka 集群的整体运行情况,在生产环境中经常使用。 MySQL环境准备 Kafka-Eagle 的安装依赖于 MySQL,MySQL 主要用来存储可视化展示的数据。 安装步骤参考:P61 尚硅谷 kafka监控_MySQL环境准备 …...
Linux之用户和用户组用户账号系统文件
一、简介 1.用户的定义 在linux系统中用户(User)需要用用户账号来访问系统,服务和信息,系统中的每个进程(运行的程序)都是使用一个特定的用户运行。每个文件都属于一个特定的用户所有。对文件和目录的访…...
ESP8266 (5),驱动屏幕
代码 第一步设置驱动库TFT_eSPI的默认配置文件 1,设置适配的屏幕 #define ST7789_DRIVER 2,设置屏幕大小 #define TFT_WIDTH 170 #define TFT_HEIGHT 320 3,设置屏幕驱动板端口和ESP8266对应的端口 // For NodeMCU - use pin numbers in the…...
ChatGPT-01 用ChatGPT指令,自学任何领域的系统知识
1. 指令位置 Github仓库:Mr Ranedeer AI Tutor 但是需要开通chatgtp plus版本,并且打开代码解释器 2 使用 学习内容 开始学习 GPT甚至可以给你思考题,给出的答案还能进行评价 配置 通过配置表修改 深度 学习风格 沟通风格 语气风格 …...
android studio模拟器不能打开
Andriod:The selected AVD is currently running in the Emulator. Please exit the emulator instance… 1.点击 2.删除下面文件 3.重新打开即可 参考...
设计模式学习笔记 - 面向对象 - 5.接口和抽象类的区别
简述 在面向对象编程中,抽象类和接口是常被用到的语法概念,是面向对象四大特性,以及很多设计模式、设计思想、设计原则实现的基础。它们之间的区别是什么?什么时候用接口?什么时候用抽象类?抽象类和接口存…...
PolarDN MISC做题笔记
cat flag 使用01打开flag.png,发现图片尾部有padding的数据。D0 CF 11 E0 A1 B1 1A E1为office2007以前版本的文件头。将其另存为flag.doc,打开发现提示需要密码。(可以注意到:D0CF11E0非常类似DOCFILE) 使用john的office2john.py 提取hash …...
Web安全之浅见
备注:这是我在2017年在自己的网站上写的文章,今天迁移过来。 昨天去参加了公司组织的一个关于网络安全的培训,了解了很多关于网络安全方面的知识,也才意识到网络安全是一项极其重要的领域。 本篇文章主要聊聊Web安全。不过我对于网…...
企业安全建设工具推荐
全自动化挖洞,助力企业安全建设,一键实现域名扫描、IP 发现、端口扫描、服务识别、网站识别、漏洞探测、分析发现、合规检查。 使用方式: 录入目标企业名称即可开始使用 技术细节: 第一步:通过企业主体关联企业备案…...
力扣(leetcode)第455题分发饼干(Python)
455.分发饼干 题目链接:455.分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i…...
隐私也要付费?Meta公司为收集用户数据再出“奇招”
Cybernews网站消息,有相关人士表示,如果欧洲数据保护委员会(EDPB)不明确指出Meta公司的“付费或同意”的模式违反了欧盟的隐私法规,那么这一模式很可能会被大规模复制,危及数百万欧洲公民的自由选择权。 自…...
Android14 InputManager-InputReader的处理
IMS启动时会调用InputReader.start()方法 InputReader.cpp status_t InputReader::start() {if (mThread) {return ALREADY_EXISTS;}mThread std::make_unique<InputThread>("InputReader", [this]() { loopOnce(); }, [this]() { mEventHub->wake(); });…...
【开题答辩全过程】以 基于Android的个人财务管理系统的设计与实现为例,包含答辩的问题和答案
个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...
从逗号到标签:用React 19 + TailwindCSS V4构建智能选项解析器
1. 为什么需要智能标签解析器? 在日常开发中,我们经常遇到这样的场景:用户需要输入多个选项,比如商品标签、兴趣关键词或者任务分类。传统做法是让用户手动输入每个标签后按回车,这种体验既笨拙又低效。而一个优秀的智…...
新手避坑指南:用Arduino Uno和CNC Shield V3驱动42步进电机(附完整代码与接线图)
新手避坑指南:用Arduino Uno和CNC Shield V3驱动42步进电机(附完整代码与接线图) 刚拿到Arduino Uno和CNC Shield V3时,你可能迫不及待想驱动42步进电机完成第一个项目。但现实往往是:电机纹丝不动、发出奇怪噪音&…...
科研人投稿破局:Paperxie AI 期刊写作,把「拒稿重写」变成「一次过审」
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 在学术圈,「写期刊论文」从来都不是敲字那么简单 —— 要贴合期刊收稿方向、要挖创新点、要卡…...
Wan2.1视频生成案例分享:从萌宠到科幻,AI视频作品集
Wan2.1视频生成案例分享:从萌宠到科幻,AI视频作品集 1. 开篇:当文字变成动态画面 想象一下这样的场景:你脑海中浮现出一只橘猫在窗台上慵懒地晒太阳,阳光透过玻璃窗洒在它毛茸茸的身体上;或者你构思了一个…...
星穹铁道自动化解决方案:用March7thAssistant释放游戏时间价值
星穹铁道自动化解决方案:用March7thAssistant释放游戏时间价值 【免费下载链接】March7thAssistant 🎉 崩坏:星穹铁道全自动 Honkai Star Rail 🎉 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 副标题&…...
解决QGroundControl或华科尔地面站因QT版本冲突导致的启动失败问题
1. 当QGroundControl或华科尔地面站打不开时该怎么办 遇到QGroundControl或华科尔地面站安装后无法启动的问题,很多用户第一反应是软件安装包损坏了。但实际上,这很可能是由于QT框架版本冲突导致的。QT是一个跨平台的C图形用户界面应用程序开发框架&…...
3步搞定!Jable视频下载终极指南:免费Chrome插件+本地工具完整教程
3步搞定!Jable视频下载终极指南:免费Chrome插件本地工具完整教程 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download Jable视频下载工具是一款专为普通用户设计的免费开源解决方…...
东北老牌央国企陪跑机构哪家实力强
在东北地区,众多求职者,特别是应届毕业生,将目光投向了工作稳定、发展前景广阔的央国企。在这一背景下,专业的求职服务机构应运而生,为求职者提供系统化的支持。辽宁优泰教育咨询有限公司便是其中一家专注于该领域的服…...
具身智能系统集成与计算效率优化路径探析
具身智能作为连接人工智能与物理世界的核心载体,通过融合感知、决策、执行等多模块实现自主交互,其系统集成的合理性与计算效率的高低,直接决定了智能体在复杂场景中的落地能力。当前,具身智能正从实验室走向产业化应用࿰…...
