W tym programie nauczysz się sprawdzać, czy dany rok jest rokiem przestępnym w Kotlinie. Jest to sprawdzane za pomocą instrukcji if else i instrukcji when.
Rok przestępny jest dokładnie podzielny przez 4, z wyjątkiem lat stuleci (lata kończące się na 00). Rok stulecia jest rokiem przestępnym tylko wtedy, gdy można go całkowicie podzielić przez 400.
Przykład 1: Program Kotlin do sprawdzania roku przestępnego przy użyciu instrukcji 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 uruchomieniu programu wynik będzie następujący:
Rok 1900 nie jest rokiem przestępnym.
W powyższym programie podany rok 1900 jest przechowywany w zmiennej roku.
- Ponieważ rok 1900 jest podzielny przez 4 i jest również rokiem stulecia (kończącym się na 00), w przypadku roku przestępnego można go podzielić przez 400. Ponieważ nie można jej podzielić przez 400, rok 1900 nie jest rokiem przestępnym.
- Ale jeśli zmienimy rok na 2000, jest on podzielny przez 4, jest rokiem stulecia i jest również podzielny przez 400. Tak więc rok 2000 jest rokiem przestępnym.
- Podobnie, jeśli zmienimy rok na 2012, jest on podzielny przez 4 i nie jest rokiem stulecia, więc rok 2012 jest rokiem przestępnym. Nie musimy sprawdzać, czy rok 2012 jest podzielny przez 400, czy nie.
Oto odpowiednik kodu w Javie: Program w języku Java do sprawdzenia roku przestępnego
Przykład 2: Program Kotlin do sprawdzania roku przestępnego przy użyciu wyrażenia 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 uruchomieniu programu wynik będzie:
Rok 2012 jest rokiem przestępnym.
W powyższym programie, zamiast używać instrukcji if else, użyliśmy wyrażenia when.
when
Wyrażenie pracuje jako:
- Kiedy rok jest podzielny przez 4
when
Wprowadzane jest inne wyrażenie, które sprawdza, czy rok jest podzielny przez 100- Jeśli tak, ponownie sprawdza, czy rok można podzielić przez 400, czy nie, i zwraca
true
lubfalse
- Jeśli tak, ponownie sprawdza, czy rok można podzielić przez 400, czy nie, i zwraca
- Jeśli nie można go podzielić przez 100, rok nie jest stuleciem (kończącym się na 00) i zwraca
true
- Jeśli rok nie jest podzielny przez 4, zwraca
false
Opierając się na wartości leap, drukuje wynik przy użyciu inline if else.