Kotlin while 和 for 循环(九)

导读大纲

    • 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 的区别只在于前者会无条件执行一次循环体
while (condition) {if (shouldExit) break
}
do {if (shouldSkip) continue} while (condition)
  1. 对于嵌套循环,Kotlin 允许您指定一个标签
    • 标签是一个标识符,后跟 at 符号(@)
    • 然后在使用 break 或 continue 时引用该标签
    • <1> 用 outer 标签标记循环
    • <2> break和 continue不带标签, 针对的就是离它最近的那个循环体
    • <3> break和 continue使用标签, 针对指定循环,即这里针对最外层循环体
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
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 来设置步进值
fun main() {for (i in 100 downTo 1 step 2){          // <1>println(fizzBuzz(i))}
}
  1. 上面使用的是range都是全包围, 即包含左右两个边界值
    • 还可以使用"…< size"半包围语法来排除右侧边界值
      1. 等价于"… size-1"
@OptIn(ExperimentalStdlibApi::class)
fun main() {for (i in 1..<5) {println(i)}
}
====================================
1
2
3
4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147480.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

从0开始的linux(4)——权限

欢迎来到博主的专栏&#xff1a;从0开始的linux 博主ID&#xff1a;代码小豪 文章目录 用户和用户组文件权限更改文件权限目录文件的权限意义普通文件的权限意义 sudo命令 linux具有多用户的任务环境&#xff0c;为了让每个用户保护各自文件数据&#xff08;防止别的用户对其他…

【功能详解】IoTDB 与 ThingsBoard 成功集成!

可视化工具集成1 IoTDB 实现了 ThingsBoard 的无缝集成对接&#xff0c;IoTDB 构建的工业数据存储处理-可视化呈现链路又多了一种可用、易用的工具选择。 我们的代码已贡献到 ThingsBoard 社区&#xff08;待发版&#xff09;&#xff0c;用户手册也已发布&#xff08;可点击下…

Spring Boot框架:蜗牛兼职网实现

第3章 系统分析 3.1 需求分析 蜗牛兼职网主要是为了提高工作人员的工作效率和更方便快捷的满足用户和企业&#xff0c;更好存储所有数据信息及快速方便的检索功能&#xff0c;对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户和企业的可操作性&#xff0…

SpringCloud入门(六)Nacos注册中心(下)

一、Nacos环境隔离 Nacos提供了namespace来实现环境隔离功能。 nacos中可以有多个namespace。namespace下可以有group、service等。不同namespace之间相互隔离&#xff0c;例如不同namespace的服务互相不可见。 使用Nacos Namespace 环境隔离 步骤&#xff1a; 1.在Nacos控制…

【AI画图】stable-diffusion-webui学习之一《安装部署》

简介 Stable Diffusion是2022年发布的深度学习文本到图像生成模型&#xff0c;它是一种潜在扩散模型&#xff0c;它由创业公司Stability AI与多个学术研究者和非营利组织合作开发。目前的SD的源代码和模型都已经开源&#xff0c;在Github上由AUTOMATIC1111维护了一个完整的项目…

Python | Leetcode Python题解之第430题扁平化多级双向链表

题目&#xff1a; 题解&#xff1a; class Solution:def flatten(self, head: "Node") -> "Node":def dfs(node: "Node") -> "Node":cur node# 记录链表的最后一个节点last Nonewhile cur:nxt cur.next# 如果有子节点&#…

OpenCV特征检测(9)检测图像中直线的函数HoughLines()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在二值图像中使用标准 Hough 变换查找直线。 该函数实现了用于直线检测的标准 Hough 变换或标准多尺度 Hough 变换算法。详见 http://homepages…

WebLogic系列漏洞

后台弱⼝令GetShell 漏洞描述 通过弱⼝令进⼊后台界⾯ , 上传部署war包 , getshell 影响范围 全版本&#xff08;前提后台存在弱⼝令&#xff09; 环境搭建 cd vulhub/weblogic/weak_password docker-compose up -d 漏洞复现 默认账号密码&#xff1a;weblogic/Oracle123 (单…

哔哩哔哩自动批量删除抽奖动态解析篇(二)

通过前文我们已经获得账户下转发的动态列表&#xff0c;这一节我们要做的就是根据前一节获得的动态列表数据判断抽奖动态是否已开奖。 一、获取抽奖动态开奖状态信息 首先我们按F12健进入网页源代码&#xff0c;然后点开一条抽奖动态的按钮链接&#xff0c;找到API接口。流程…

Leetcode 1041. 困于环中的机器人

1.题目基本信息 1.1.题目描述 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。注意: 北方向 是y轴的正方向。 南方向 是y轴的负方向。 东方向 是x轴的正方向。 西方向 是x轴的负方向。 机器人可以接受下列三条指令之一&#xff1a; “G”&…

基于springboot在线学籍管理系统

基于springboot在线学籍管理系统 摘 要 对在线学籍管理的流程进行科学整理、归纳和功能的精简&#xff0c;通过软件工程的研究方法&#xff0c;结合当下流行的互联网技术&#xff0c;最终设计并实现了一个简单、易操作的在线学籍管理系统。内容包括系统的设计思路、系统模块和…

从零开始一个git操作实例,图文并茂

徒弟不懂git怎么用&#xff0c; 于是写了篇文章&#xff0c; 把本地git操作从头写了一遍&#xff0c; 自己去看吧&#xff01; 0、基本概念 •Git是一个免费、开源的、分布式版本控制系统 •它使用一个特殊的叫做仓库的数据库来记录文件的变化 •仓库中的每个文件都有一个…

【网络】TCP协议的简单使用

目录 echo_service server 单进程单线程 多进程 多线程 线程池 client echo_service_code echo_service 还是跟之前UDP一样&#xff0c;我们先通过实际的代码来实现一些小功能&#xff0c;简单的来使用TCP协议进行简单的通信&#xff0c;话不多说&#xff0c;我们先实现…

Redis面试真题总结(四)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ AOF 持久化&#xff1f; AOF&#xff08;Append Only File&#x…

Selenium4.0实现自动搜索功能

01.Selenium4.0实现搜索功能 1.安装Selenium及查看Selenium版本 pip install selenium pip show seleniumfrom selenium import webdriver from chromedriver_py import binary_path import time from selenium.webdriver.common.by import By from selenium.webdriver.commo…

智能农业系统——土壤养分运移转化

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、AI知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&#x…

鸿蒙OpenHarmony【轻量系统内核扩展组件(C++支持)】子系统开发

C支持 基本概念 C作为目前使用最广泛的编程语言之一&#xff0c;支持类、封装、重载等特性&#xff0c;是在C语言基础上开发的一种面向对象的编程语言。 运行机制 C代码的识别主要由编译器支持&#xff0c;系统主要对全局对象进行构造函数调用&#xff0c;进行初始化操作。…

H264-NAL

目录 错误日志NAL简介参考资料 错误日志 拉流时存在如下日志,会因为拉流失败导致之后的任务也停止 missing picture in access unit with size 16384 Invalid NAL unit size Error splitting the input into NAL units. 之后只要设置抓取异常后&#xff0c;重新拉流&#xff…

zabbix email 告警

配置媒介、触发器动作&#xff08;动作、操作&#xff09; 为用户 定义媒体&#xff0c;比如电子邮件地址 动作 - 条件

手机在网状态查询接口如何用PHP进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口&#xff0c;即输入手机号码查询手机号在网状态&#xff0c;返回有正常使用、停机、在网但不可用、不在网&#xff08;销号/未启用/异常&#xff09;、预销户等多种状态。 二、手机在网状态查询适用哪些场景…