В тази програма ще се научите да проверявате дали дадената година е високосна или не в Котлин. Това се проверява с помощта на оператор 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.
В when
израз работи в сферата на:
- Когато годината се дели на 4
- Въвежда се друг
when
израз, който проверява дали годината се дели на 100- Ако отговорът е да, той отново проверява дали годината се дели на 400 или не и връща
true
илиfalse
- Ако отговорът е да, той отново проверява дали годината се дели на 400 или не и връща
- Ако не се дели на 100, годината не е столетна (завършваща с 00) и се връща
true
- Въвежда се друг
- Ако годината не се дели на 4, тя се връща
false
Въз основа на стойността на скок, той отпечатва изхода, използвайки вграден, ако не.