# Kotlin 程序：检查闰年

> 原文： [https://www.programiz.com/kotlin-programming/examples/leap-year](https://www.programiz.com/kotlin-programming/examples/leap-year)

#### 在此程序中，您将学习在 Kotlin 中检查给定年份是否为闰年。 使用`if else`语句和`when`语句进行检查。

除世纪年份（以 00 结尾的年份）外，闰年可精确地除以 4。 只有将世纪完全除以 400，世纪年才是闰年。

## 示例 1：使用`if else`语句检查闰年

```kt
fun main(args: Array<String>) {

    val year = 1900
    var leap = false

    if (year % 4 == 0) {
        if (year % 100 == 0) {
            // year is divisible by 400, hence the year is a leap year
            leap = year % 400 == 0
        } else
            leap = true
    } else
        leap = false

    println(if (leap) "$year is a leap year." else "$year is not a leap year.")
}
```

运行该程序时，输出为：

```kt
1900 is not a leap year.
```

在上述程序中，给定年份 1900 存储在变量`year`中。

*   由于 1900 除以 4 也是一个世纪年（以 00 结尾），因此，年已除以 400。 由于不能被 400 整除，因此 1900 年不是闰年。
*   但是，如果我们将年份更改为 2000，则它可以被 4 整除，是世纪年份，也可以被 400 整除。因此，2000 是闰年。
*   同样，如果我们将年份更改为 2012，则该年份可以被 4 整除，并且不是世纪年份，因此 2012 是闰年。 我们不需要检查 2012 年是否可以被 400 整除。

以下是等效的 Java 代码：[检查闰年的 Java 程序](/java-programming/examples/leap-year)

* * *

## 示例 2：使用`when`表达式来检查闰年

```kt
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 is a leap year." else "$year is not a leap year.")
}
```

运行程序时，输出为：

```kt
2012 is a leap year.
```

在上面的程序中，我们使用了`when`表达式，而不是使用`if else`语句。

`when`表达式的工作方式如下：

*   当`year`被 4 整除时
    *   输入另一个`when`表达式，该表达式检查`year`是否可被 100 整除
        *   如果是，则再次检查`year`是否除以 400，然后返回`true`或`false`
    *   如果不能除以 100，则`year`不是世纪年（以 00 结尾），并返回`true`
*   如果`year`不能被 4 整除，则返回`false`

基于`leap`的值，如果没有，它将使用*内联打印输出*。