在此程序中,您将学习在Kotlin中检查给定年份是否为闰年。使用if else语句和when语句进行检查。
闰年可以被4整除,但以00结尾的世纪年除外。只有在能被400整除的情况下,世纪年才是闰年
fun main(args: Array<String>) {
    val year = 1900
    var leap = false
    if (year % 4 == 0) {
        if (year % 100 == 0) {
            //year 能被400整除,因此是闰年
            leap = year % 400 == 0
        } else
            leap = true
    } else
        leap = false
    println(if (leap) "$year 是闰年." else "$year 不是闰年.")
}运行该程序时,输出为:
1900 不是闰年.
在上述程序中,给定年份1900存储在变量 year 中。
因为1900年可以被4整除,也是一个世纪年(以00结尾),而闰年是可以被400整除。因为1900不能被400整除,所以1900年不是闰年。
但是,如果我们更改year为2000,则它可以被4整除,是一个世纪年份,也可以被400整除。因此,2000是闰年。
同样,如果我们将年份更改为2012,则该年份可以被4整除,并且不是世纪年份,因此2012是闰年。 我们不需要再检查2012年是否可以被400整除。
以下是等效的Java代码:检查闰年的Java程序
fun main(args: Array<String>) {
    val year = 2012
    var leap = false
    leap = when {
        year % 4 == 0 -> {
            when {
                year % 100 == 0 -> year % 400 == 0
                else -> true
            }
        }
        else -> false
    }
    println(if (leap) "$year 是闰年." else "$year 不是闰年.")
}运行该程序时,输出为:
2012 是闰年.
在上面的程序中,我们使用了when表达式,而不是使用if else语句。
when表达式的工作方式如下:
当年(year)可被 4 整除时:
如果能被4整除,则再次检查是否year可被400整除,然后返回true 或 false
when输入另一个表达式,检查 year 是否可以被100整除
如果不能除以100,则 year 不是一个世纪年(以00结尾),然后返回 true
如果 year 不能被4整除,则返回 false
根据leap的值,它使用内联if else打印输出。