В этой программе вы научитесь проверять, является ли данный год високосным в Котлине. Это проверяется с помощью операторов if else и when.
Високосный год делится на 4, за исключением столетий (годы, оканчивающиеся на 00). Вековой год считается високосным, только если он делится на 400.
Пример 1: Программа Kotlin для проверки високосного года с использованием оператора if else
fun main(args: Array) ( 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 год не високосный.
В приведенной выше программе указанный 1900 год хранится в переменном году.
- Так как 1900 делится на 4 и также является годом столетия (оканчивается на 00), то високосный год делится на 400. Так как он не делится на 400, 1900 год не високосный.
- Но если мы изменим год на 2000, он будет делиться на 4, это вековой год, а также делиться на 400. Итак, 2000 - високосный год.
- Аналогичным образом, если мы изменим год на 2012, он будет делиться на 4 и не будет годом столетия, поэтому 2012 год будет високосным. Нам не нужно проверять, делится ли 2012 на 400 или нет.
Вот эквивалентный код Java: Программа Java для проверки високосного года
Пример 2: Программа Kotlin для проверки високосного года с использованием выражения when
fun main(args: Array) ( 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 год - високосный.
В приведенной выше программе вместо использования оператора if else мы использовали выражение when.
when
Выражение работает как:
- Когда год делится на 4
- Вводится другое
when
выражение, которое проверяет, делится ли год на 100.- Если да, он снова проверяет, делится ли год на 400 или нет, и возвращает
true
илиfalse
- Если да, он снова проверяет, делится ли год на 400 или нет, и возвращает
- Если не делится на 100, год не является годом столетия (оканчивается на 00) и возвращается
true
- Вводится другое
- Если год не делится на 4, возвращается
false
В зависимости от значения leap он печатает вывод, используя встроенный if else.