Kotlin语言的程序的逻辑控制和循环结构
发布日期:2021-05-06 00:55:38 浏览次数:36 分类:技术文章

本文共 2744 字,大约阅读时间需要 9 分钟。

1. 程序的逻辑控制和循环结构

1.1 if语句

Kotlin中的if语句相比于Java有一个额外的功能:它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值。

测试代码:

//主函数fun main() {//    因为 1 < 2 所有这里会打印 1    println(largerNumber(1, 2))}//返回2个参数中最大的那个数fun largerNumber(num1: Int, num2: Int): Int {    var value = 0    if (num1 > num2) {        value = num1    } else {        value = num2    }    return value}

运行结果:

在这里插入图片描述

仔细观察上述代码,你会发现value其实是一个多余的变量,我们可以直接将if语句返回,这样代码将会变得更加精简,如下所示:
//主函数fun main() {//    因为 1 < 2 所有这里会打印 1    println(largerNumber(1, 2))}//返回2个参数中最大的那个数fun largerNumber(num1: Int, num2: Int): Int {    return if (num1 > num2) {        num1    } else {        num2    }}

运行结果:

在这里插入图片描述

当一个函数只有一行代码时,可以省略函数体部分,直接将这一行代码使用等号串连在函数定义的尾部。虽然largerNumber()函数不止只有一行代码,但是它和只有一行代码的作用是相同的,只是return了一下if语句的返回值而已,符合该语法糖的使用条件。那么我们就可以将代码进一步精简:
//主函数fun main() {//    因为 1 < 2 所有这里会打印 1    println(largerNumber(1, 2))}//返回2个参数中最大的那个数fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) {    num1} else {    num2}

最后,还可以将上述代码再精简一下,直接压缩成一行代码:

fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2

1.2 when

当需要判断的条件非常多的时候,可以考虑使用when语句来替代if语句。这里先用上次讲到的if语句做一个引例:
//主函数fun main() {//    90    println(getScore("Tom"))//    80    println(getScore("Peter"))//    0    println(getScore("ZhangSan"))}// 查询考试成绩的功能fun getScore(name: String) = if (name == "Tom") {    90} else if (name == "Peter") {    80} else {    0}

运行结果:

在这里插入图片描述
接下来我们使用when语法:

//主函数fun main() {//    90    println(getScore("Tom"))//    80    println(getScore("Peter"))//    0    println(getScore("ZhangSan"))}// 查询考试成绩的功能fun getScore(name: String) = when (name) {    "Tom" -> 90    "Peter" -> 80    else -> 0}

运行结果:

在这里插入图片描述
怎么样, 有没有感觉到小清新, 哈哈 ,爱了爱了
when语句允许传入一个任意类型的参数

除了精确匹配之外,when语句还允许进行类型匹配

测试代码:

//主函数fun main() {//    number is Int    println(checkNumber(10))//    number is Double    println(checkNumber(10.0))//    number not support    println(checkNumber(10L))}//类型匹配测试fun checkNumber(num: Number) {    when (num) {        is Int -> println("number is Int")        is Double -> println("number is Double")        else -> println("number not support")    }}

运行结果:

在这里插入图片描述

1.3 for-in循环

val range = 0..10

上述代码表示创建了一个0到10的区间,并且两端都是闭区间,这意味着0到10这两个端点都是包含在区间中的,用数学的方式表达出来就是[0, 10]。也可以使用until关键字来创建一个左闭右开的区间:

val range = 0 until 10

上述代码表示创建了一个0到10的左闭右开区间,它的数学表达方式是[0, 10)。有了区间之后,我们就可以通过for-in循环来遍历这个区间:

测试代码:

fun main() {
for (i in 0..10) {
println(i) }}

运行结果:

在这里插入图片描述
测试util关键字:

fun main() {
// 这样会打印1-9 for (i in 0 until 10) {
println(i) }}

运行结果:

在这里插入图片描述

如果你想跳过其中的一些元素,可以使用step关键字:

测试代码:

fun main() {
// 会打印 0 2 4 6 8// 相当于每次i+=2 for (i in 0 until 10 step 2) {
println(i) }}

在这里插入图片描述

如果你想创建一个降序的区间,可以使用downTo关键字:
fun main(){
// 打印10 9 8 7 6 5 4 3 2 1 for(i in 10 downTo 0){
println(i) }}

运行结果:

在这里插入图片描述



上一篇:Kotlin语言之面向对象编程
下一篇:Kotlin学习之变量和函数的讲解

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月25日 06时08分08秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

考研408联盟新添一所985!某知名大学专业课改用408! 2019-03-03
最有钱的大学是哪个?教育部直属高校公布2018年决算 2019-03-03
408的逆袭!武汉大学所有计算机/软件专业都改为408! 2019-03-03
408又多一所学校!广东某大学专业课改为408! 2019-03-03
【报名问题】考研现场确认时发现报考点选错了怎么办? 2019-03-03
100000+人体验过后都说:这TM绝对是最变态的英语学习方法…… 2019-03-03
广东省将新增一所“中科大”,办学规模初定1万人! 2019-03-03
提醒 | 未下载打印准考证的考生,不能参加2020年考研初试 2019-03-03
【调剂】2020年中科院上海光机所接收报考硕士研究生调剂生的通知 2019-03-03
【调剂】其它计算机/软件调剂信息 20.4.21 2019-03-03
【调剂】211 内蒙古大学计算机学院2020年拟接收调剂硕士研究生公告 2019-03-03
【调剂】浙江理工大学2020年硕士研究生调剂信息 2019-03-03
【调剂】华侨大学媒体分析与数据挖掘小组招收学硕调剂生 2019-03-03
分数线385!平均分399!985大学计算机的真正“实力”! 2019-03-03
【调剂】211云南大学2020年硕士研究生招生调剂通知 2019-03-03
【调剂】985复旦大学类脑智能科学与技术研究院硕士研究生招生接收校内调剂考生工作细则... 2019-03-03
【调剂】沈阳航空航天大学2020年硕士研究生调剂信息 2019-03-03
清华大学来山东了,成立新研究院! 2019-03-03
最新!薪酬最高的大学本科专业公布! 2019-03-03
8月份还想换专业,考研是不是要废了? 2019-03-03