V tomto programe sa naučíte skontrolovať, či je daný rok priestupným rokom v Kotline. Toto sa kontroluje pomocou príkazu if else a príkazu when.
Prestupný rok je deliteľný presne 4 okrem storočných rokov (roky končiace sa 00). Rok storočia je priestupným rokom, iba ak je úplne deliteľný číslom 400.
Príklad 1: Program Kotlin na kontrolu priestupného roku pomocou príkazu 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.") )
Po spustení programu bude výstup:
Rok 1900 nie je priestupným rokom.
Vo vyššie uvedenom programe je daný rok 1900 uložený v premennom roku.
- Pretože rok 1900 je deliteľný 4 a je to tiež storočný rok (končiaci číslom 00), deliteľný je deliteľný 400 pre priestupný rok. Pretože to nie je deliteľné číslom 400, 1900 nie je priestupný rok.
- Ak však zmeníme rok na rok 2000, je to deliteľné 4, je to storočný rok a je tiež deliteľné 400. Takže rok 2000 je priestupný.
- Rovnako, ak zmeníme rok na rok 2012, je to deliteľné 4 a nejde o storočný rok, takže rok 2012 je priestupný. Nemusíme kontrolovať, či je rok 2012 deliteľný číslom 400 alebo nie.
Tu je ekvivalentný kód Java: Program Java na kontrolu priestupného roku
Príklad 2: Program Kotlin na kontrolu priestupného roku pomocou výrazu 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.") )
Po spustení programu bude výstupom:
Rok 2012 je priestupný.
Vo vyššie uvedenom programe sme namiesto použitia príkazu if else použili výraz when.
when
Výraz pracuje ako:
- Keď je rok deliteľný 4
when
Zadal sa ďalší výraz, ktorý skontroluje, či je rok deliteľný 100- Ak áno, znova skontroluje, či je rok deliteľný 400 alebo nie, a vráti
true
alebofalse
- Ak áno, znova skontroluje, či je rok deliteľný 400 alebo nie, a vráti
- Ak nie je deliteľný 100, rok nie je storočný (končí sa 00) a vráti sa
true
- Ak rok nie je deliteľný 4, vráti sa
false
Na základe hodnoty skoku vytlačí výstup pomocou vloženého riadku, ak ešte existuje.