闰年是能被4整除的年份,但世纪年(以00结尾的年份)除外。世纪年只有能被400整除时才是闰年。
示例 1:Kotlin 程序使用 if else 语句检查闰年
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.")
}
运行程序后,输出将是
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 程序检查闰年
示例 2:Kotlin 程序使用 when 表达式检查闰年
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.")
}
运行程序时,输出将是
2012 is a leap year.
在上面的程序中,我们使用了 when 表达式,而不是 if else 语句。
when
表达式的工作方式如下:
- 当 year 能被 4 整除时
- 输入另一个
when
表达式,检查 year 是否能被 100 整除- 如果可以,它会再次检查 year 是否能被 400 整除,并返回
true
或false
- 如果可以,它会再次检查 year 是否能被 400 整除,并返回
- 如果不能被 100 整除,year 就不是世纪年(以 00 结尾),并返回
true
- 输入另一个
- 如果 year 不能被 4 整除,则返回
false
根据 leap 的值,它使用内联 if else 打印输出。