У цій програмі ви навчитеся перевіряти, чи є даний рік високосним чи ні в Котліні. Це перевіряється за допомогою операторів 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 для перевірки високосного року, використовуючи вирази
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
Вираз працює як:
- Коли рік ділиться на 4
- Вводиться інший
when
вираз, який перевіряє, чи рік ділиться на 100- Якщо так, він знову перевіряє, чи рік ділиться на 400 чи ні, і повертає
true
абоfalse
- Якщо так, він знову перевіряє, чи рік ділиться на 400 чи ні, і повертає
- Якщо його не поділити на 100, рік не є столітнім роком (закінчується 00) і повертається
true
- Вводиться інший
- Якщо рік не ділиться на 4, він повертається
false
Залежно від величини стрибка, він друкує результат, використовуючи вбудований, якщо не так.