热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

让我们学习如何使用Kotlin进行编码第004部分

哇,您可以相信我们已经参加本系列的第五期了吗?如果您是本系列的新手,我强烈建议您回到引言部分,因为每个部分都基于先前的部分。

哇,您可以相信我们已经参加本系列的第五期了吗? 如果您是本系列的新手,我强烈建议您回到引言部分,因为每个部分都基于先前的部分。 在第四部分中,我们将通过学习Kotlin中的其他循环来继续学习控制流。 但是,在开始之前,请确保您创建了一个名为part_004的新程序包,并创建了一个名为app的新Kotlin文件。 太好了,让我们开始吧。

感谢Onur Sahin结束Unsplash

在此示例中,我们将使用三种不同的方法打印出汽车列表。 为了获得在“ 2017年最佳跑车”中搜索的汽车列表,并在Car and Driver上找到了这篇文章 。 随意窃取我的清单或提出自己的清单。 创建此程序的第一步是创建一个String对象数组。 对于我的程序,它看起来像这样:

val cars = arrayOf( "Toyota Camry" , "Toyota Corolla" , "Honda Civic" , "Nissan Altima" , "Honda Accord" , "Hyundai Elantra" , "Nissan Sentra" , "Ford Fusion" , "Chevrolet Cruze" , "Hyundai Sonata" , "Ford Focus" , "Mazda MX-5 Miata" , "Fiat 124 Spider" , "Subaru BRZ" , "Toyota 86" , "Nissan Z" , "Dodge Challenger" , "Ford Mustang" , "Chevrolet Camaro" , "Audi TT / TTS" )

您可能现在想知道什么是arrayOf甚至什么是数组。 为了回答第一个问题,arrayOf允许您创建对象数组,在这种情况下,它们是字符串。 为了回答第二个问题,数组是对象的集合。 该集合通常会有一些共性,在这种情况下,我们要代表一个汽车名称列表。 还可能需要注意的是,每个项目都用逗号分隔,新行是可选的(但它可以帮助较长数组的可读性)。

随着我们进一步进入本系列,我们将讨论其他类型的集合以及它们的优缺点。 通常,数组是集合的最基本类型,并且是其他几个集合的基础。 虽然这可能属于“太多信息Cody!” 我还想指出,事物的排列通常就是应用程序的工作方式。 您的Facebook墙由一系列帖子提供动力,中级由一系列文章提供动力,而YouTube由一系列视频提供动力。 这些不是确切的实现,而是简化的示例。

顺便说一句,让我们开始打印这些汽车。

基本的For循环

因此,现在该遍历此汽车列表并对其进行处理。 在我们的第一个示例中,我们只是要打印出汽车,每行一辆汽车。 这是我们的第一个示例:

println( "\nPrinting Cars In Order" ) for (index in cars.indices) { println(cars[index]) }

因此,从技术上讲,这不是最基本的for循环,相反,我想举一个示例,说明您可以使用Java(或其他语言)进行此操作。 本质上,我们正在做的是使用cars.indices获取一个索引数组(整数),并且我们在该列表上进行迭代。 这允许我们做的就是通过其索引访问数组。 如果我只想访问Toyota Camry,我将仅引用car [0],这是该车的索引。 使用数组时,它们总是从零开始,因此,如果我想访问Toyota Corolla,它是列表中的第二项,我将引用汽车[1]。 我们上面的循环将从零开始,到十九结束(我们的列表有20个项目)。

在汽车上执行操作

我要提供的下一个示例是如何在这些汽车上执行操作。 我能想到的最简单的示例是以小写字母打印出汽车名称。 这样我们也将直接访问汽车,因此不再索引。 通常,这是您应该如何遍历Kotlin中列表中的项目的方式。 看起来像这样:

println( "\nPrinting Cars In Order (Lowercase)" ) for (car in cars) { println(car.toLowerCase()) }

因此,本质上,我们正在做的事情就是将我们的价值作为汽车的价值,并将每个价值设置为一个名为car的变量。 然后,我们将使用汽车的价值,将其小写,然后打印出来。

打印“福特”后停止打印

我要讲的最后一个示例是使用while循环仅打印出项目,直到我们到达名称中带有“ Ford”的项目为止。 这是我的解决方案:

println( "\nPrinting Cars Until Ford Found" ) var fordWasPrinted = false var index = 0; while (!fordWasPrinted) { val car = cars[index] println(car) fordWasPrinted = car.toLowerCase().contains( "ford" ) index++ }

在进入while循环之前,我们首先设置两个变量。 我们需要一个条件来跟踪循环,为此,我们声明了fordWasPrinted,默认情况下为false。 我还定义了索引,该索引将跟踪我们在数组中的位置,同样,数组从零开始。

现在是时候进入while循环了,只要fordWasPrinted为false,它将继续循环。 我们在循环内部执行的第一件事是将car设置为与cars数组中的当前项相等。 然后,我们将汽车打印到控制台。 在下一行,我们确定汽车是否包含“ ford”一词。 为此,我们首先获取car的小写字符串表示形式,然后询问其是否包含单词“ ford”。 如果这样做,它将返回true,否则将返回false。 我们将返回的值分配给fordWasPrinted。 然后,我们增加index的值,然后返回到循环的顶部,在此我们检查fordWasPrinted的值。 一旦该值为真,我们将退出循环并完成我们的程序。

注意,如果列表中没有福特,我的解决方案将导致应用崩溃。 作为家庭作业,您可以随意添加一些错误处理,因此,如果您从列表中省略Ford,则应用程序不会崩溃。

因此,现在您可以继续运行该程序,并且应该看到汽车清单被打印了三遍,每次都应该略有不同。 第一次它将正常打印出来,第二次将它们全部转换为小写,第三次将仅打印出一部分列表。 这是我的完整解决方案:

fun main(args : Array) { val cars = arrayOf( "Toyota Camry" , "Toyota Corolla" , "Honda Civic" , "Nissan Altima" , "Honda Accord" , "Hyundai Elantra" , "Nissan Sentra" , "Ford Fusion" , "Chevrolet Cruze" , "Hyundai Sonata" , "Ford Focus" , "Mazda MX-5 Miata" , "Fiat 124 Spider" , "Subaru BRZ" , "Toyota 86" , "Nissan Z" , "Dodge Challenger" , "Ford Mustang" , "Chevrolet Camaro" , "Audi TT / TTS" ) println( "\nPrinting Cars In Order" ) for (index in cars.indices) { println(cars[index]) } println( "\nPrinting Cars In Order (Lowercase)" ) for (car in cars) { println(car.toLowerCase()) } println( "\nPrinting Cars Until Ford Found" ) var fordWasPrinted = false var index = 0; while (!fordWasPrinted) { val car = cars[index] println(car) fordWasPrinted = car.toLowerCase().contains( "ford" ) index++ } }

这就是本课的全部内容。 与往常一样,如果您有任何问题或评论,请在下面留下您的答复。 本文的主题受到上一篇文章中的反馈的启发,因此,我会尽力将反馈纳入以后的文章中。

From: https://hackernoon.com/lets-learn-how-to-code-using-kotlin-part-004-1e0b4b010e6f



推荐阅读
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 本文提出了一种基于栈结构的高效四则运算表达式求值方法。该方法能够处理包含加、减、乘、除运算符以及十进制整数和小括号的算术表达式。通过定义和实现栈的基本操作,如入栈、出栈和判空等,算法能够准确地解析并计算输入的表达式,最终输出其计算结果。此方法不仅提高了计算效率,还增强了对复杂表达式的处理能力。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • ### 优化后的摘要本文对 HDU ACM 1073 题目进行了详细解析,该题属于基础字符串处理范畴。通过分析题目要求,我们可以发现这是一道较为简单的题目。代码实现中使用了 C++ 语言,并定义了一个常量 `N` 用于字符串长度的限制。主要操作包括字符串的输入、处理和输出,具体步骤涉及字符数组的初始化和字符串的逆序操作。通过对该题目的深入探讨,读者可以更好地理解字符串处理的基本方法和技巧。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 题目要求维护一个数列,并支持两种操作:一是查询操作,语法为QL,用于查询数列末尾L个数中的最大值;二是更新操作,用于修改数列中的某个元素。本文通过ST表(Sparse Table)优化查询效率,确保在O(1)时间内完成查询,同时保持较低的预处理时间复杂度。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
author-avatar
fion依依315
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有