原文: https://www.programiz.com/kotlin-programming/examples/leap-year
除世纪年份(以 00 结尾的年份)外,闰年可精确地除以 4。 只有将世纪完全除以 400,世纪年才是闰年。
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 程序
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
- 如果是,则再次检查
- 如果不能除以 100,则
year
不是世纪年(以 00 结尾),并返回true
- 输入另一个
- 如果
year
不能被 4 整除,则返回false
基于leap
的值,如果没有,它将使用内联打印输出。