哇,您可以相信我们已经参加本系列的第五期了吗? 如果您是本系列的新手,我强烈建议您回到引言部分,因为每个部分都基于先前的部分。 在第四部分中,我们将通过学习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