ZetCode

Kotlin if/else

最后修改于 2025 年 4 月 19 日

Kotlin 的条件语句允许程序根据布尔表达式做出决策。if/else 关键字是控制程序流程的基础。本教程通过实际例子深入探讨 if/else

基本定义

在 Kotlin 中,if 是一个返回值的表达式。它可以使用或不使用 else。条件必须计算为布尔值。当用作表达式时,else 分支是强制性的。

简单的 if 语句

if 的最基本形式是在条件为真时执行一段代码块。条件必须是一个布尔表达式。如果为假,则跳过该代码块。

SimpleIf.kt
package com.zetcode

fun main() {

    val age = 20
    
    if (age >= 18) {
        println("You are an adult")
    }
}

此示例检查年龄是否满 18 岁或以上。如果为真,则打印“您是成年人”。代码块仅在满足条件时执行。对于 18 岁以下的人,不执行任何操作。

if/else 语句

当条件为假时,else 子句提供了一个替代路径。这在您的代码中创建了一个二元决策点。将且仅将执行一个代码块。

IfElse.kt
package com.zetcode

fun main() {

    val num = 7
    
    if (num % 2 == 0) {
        println("$num is even")
    } else {
        println("$num is odd")
    }
}

这检查一个数字是偶数还是奇数。第一个代码块针对偶数运行,而 else 代码块针对奇数运行。在这种情况下,输出将是“7 是奇数”。

if 作为表达式

在 Kotlin 中,if 可以返回值,使其成为一个表达式。这取代了其他语言的三元运算符。返回的值来自代码块中的最后一个表达式。

IfExpression.kt
package com.zetcode

fun main() {

    val a = 10
    val b = 20
    
    val max = if (a > b) {
        println("a is larger")
        a
    } else {
        println("b is larger or equal")
        b
    }
    
    println("Max is $max")
}

在这里,if 确定 a 和 b 之间的较大值。结果分配给 max。两个分支都打印一条消息并返回值。输出显示“b 大于或等于”和“Max is 20”。

使用 else if 的多个条件

对于更复杂的决策,使用 else if 链接条件。每个条件都按顺序检查,直到其中一个匹配。仅执行第一个匹配的代码块。

ElseIf.kt
package com.zetcode

fun main() {

    val score = 85
    
    if (score >= 90) {
        println("Grade A")
    } else if (score >= 80) {
        println("Grade B")
    } else if (score >= 70) {
        println("Grade C")
    } else {
        println("Grade F")
    }
}

此示例根据分数范围分配字母等级。条件从上到下检查。对于分数 85,它打印“Grade B”并跳过剩余的检查。else 处理所有其他情况。

嵌套的 if 语句

您可以在其他 if 代码块内嵌套 if 语句以实现复杂的逻辑。每个嵌套的 if 都有其自己的条件。正确的缩进对于可读性至关重要。

NestedIf.kt
package com.zetcode

fun main() {

    val age = 25
    val hasLicense = true
    
    if (age >= 18) {
        if (hasLicense) {
            println("You can drive")
        } else {
            println("You need a license")
        }
    } else {
        println("Too young to drive")
    }
}

这同时检查年龄和驾照状态。外部 if 验证年龄,而内部 if 检查驾照。只有持有驾照的成年人才能开车。在这种情况下,输出为“您可以开车”。

何时使用 when 替换 if

对于多个条件,Kotlin 的 when 通常比嵌套的 if 更简洁。when 对于匹配多个值更具可读性。它也适用于枚举和范围。

WhenInsteadOfIf.kt
package com.zetcode

fun main() {

    val day = 3
    val dayType = when (day) {
        1, 2, 3, 4, 5 -> "Weekday"
        6, 7 -> "Weekend"
        else -> "Invalid day"
    }
    
    println(dayType) // Output: Weekday
}

when 表达式替换了多个 if-else 检查。它将 day 与 weekday 或 weekend 值匹配。对于 day 3,输出为“Weekday”。else 处理无效输入。

单行 if 表达式

对于简单条件,Kotlin 允许单行 if 表达式,无需大括号。这很简洁,但应谨慎使用。复杂的逻辑应使用完整的代码块以提高可读性。

OneLineIf.kt
package com.zetcode

fun main() {

    val isRaining = true
    val activity = if (isRaining) "Stay inside" else "Go outside"
    
    println(activity) // Output: Stay inside
}

此单行 if 根据天气确定活动。条件足够简单,适合这种紧凑的形式。当 isRaining 为 true 时,输出为“留在室内”。每个分支都直接返回一个字符串。

if/else 的最佳实践

来源

Kotlin 控制流程文档

本教程深入探讨了 Kotlin 的 if/else 语句,展示了从基本用法到高级用法的各种形式。我们探索了表达式、嵌套、类似 when 的替代方案以及最佳实践。正确使用条件语句可以使程序更灵活、更强大。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有多年的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我写了 1400 多篇文章和 8 本电子书。我拥有超过八年的编程教学经验。

列出 所有 Kotlin 教程