V tomto programu se naučíte zkontrolovat, zda je daný rok přestupným rokem v Kotlině. To se kontroluje pomocí příkazu if else a příkazu when.
Přestupný rok je přesně dělitelný čtyřmi, s výjimkou let století (roky končící 00). Rok století je přestupným rokem, pouze pokud je dokonale dělitelný číslem 400.
Příklad 1: Program Kotlin ke kontrole přestupného roku pomocí pří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.") )
Když spustíte program, výstup bude:
Rok 1900 není přestupným rokem.
Ve výše uvedeném programu je daný rok 1900 uložen v proměnném roce.
- Vzhledem k tomu, že rok 1900 je dělitelný čtyřmi a je také stoletým rokem (končící číslem 00), je dělitelný 400 pro přestupný rok. Protože to není dělitelné 400, 1900 není přestupný rok.
- Pokud však změníme rok na rok 2000, je dělitelný čtyřmi, je rokem století a je také dělitelný 400. Rok 2000 je tedy přestupným rokem.
- Stejně tak, pokud změníme rok na rok 2012, je to dělitelné 4 a není to rok století, takže rok 2012 přestupný. Nemusíme kontrolovat, zda je rok 2012 dělitelný číslem 400 nebo ne.
Zde je ekvivalentní kód Java: Program Java ke kontrole přestupného roku
Příklad 2: Program Kotlin ke kontrole přestupného roku pomocí 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.") )
Při spuštění programu bude výstup:
Rok 2012 je přestupným rokem.
Ve výše uvedeném programu jsme místo použití příkazu if else použili výraz when.
when
Výraz pracuje jako:
- Když je rok dělitelný 4
when
Je zadán další výraz, který kontroluje, zda je rok dělitelný 100- Pokud ano, znovu zkontroluje, zda je rok dělitelný 400 nebo ne, a vrátí
true
nebofalse
- Pokud ano, znovu zkontroluje, zda je rok dělitelný 400 nebo ne, a vrátí
- Pokud není dělitelný 100, rok není rokem století (končící 00) a vrátí se
true
- Pokud rok není dělitelný 4, vrátí se
false
Na základě hodnoty skoku vytiskne výstup pomocí vloženého řádku, pokud existuje.