Kotlin Program to Check Leap Year

A leap year is exactly divisible by 4 except for century years (years ending with 00). The century year is a leap year only if it is perfectly divisible by 400.

Example 1: Kotlin Program to Check a Leap Year using if else statement

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.")
}

When you run the program, the output will be:

1900 is not a leap year.

In the above program, given year 1900 is stored in the variable year.

  • Since 1900 is divisble by 4 and is also a century year (ending with 00), it has be divisble by 400 for a leap year. Since it's not divisible by 400, 1900 is not a leap year.
  • But, if we change the year to 2000, it is divisible by 4, is a century year and is also divisible by 400. So, 2000 is a leap year.
  • Likewise, If we change the year to 2012, it is divisible by 4 and is not a century year, so 2012 a leap year. We don't need to check if 2012 is divisible by 400 or not.

Here's the equivalent Java code: Java Program to Check Leap Year


Example 2: Kotlin Program to Check Leap Year using when expression

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.")
}

When run the program, the output will be:

2012 is a leap year.

In the above program, instead of using an if else statement, we have used a when expression.

The when expression works as:

  • When year is divisible by 4
    • Another when expression is entered which checks if year is divisible by 100
      • If yes, it again checks if year is divisble by 400 or not, and returns true or false
    • If not divisble by 100, year is not a century year (ending with 00) and returns true
  • If year is not divisible by 4, it returns false

Based on the value of leap, it prints the output using an inline if else.

Did you find this article helpful?

Our premium learning platform, created with over a decade of experience and thousands of feedbacks.

Learn and improve your coding skills like never before.

Try Programiz PRO
  • Interactive Courses
  • Certificates
  • AI Help
  • 2000+ Challenges