Neste programa, você aprenderá a verificar se o ano em questão é bissexto ou não em Kotlin. Isso é verificado usando uma instrução if else e uma instrução when.
Um ano bissexto é exatamente divisível por 4, exceto pelos anos do século (anos que terminam em 00). O ano do século é um ano bissexto apenas se for perfeitamente divisível por 400.
Exemplo 1: programa Kotlin para verificar um ano bissexto usando a instrução 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.") )
Quando você executa o programa, a saída será:
1900 não é um ano bissexto.
No programa acima, dado ano 1900 é armazenado no ano variável.
- Uma vez que 1900 é divisível por 4 e também é um ano do século (terminando com 00), pode ser dividido por 400 para um ano bissexto. Como não é divisível por 400, 1900 não é um ano bissexto.
- Mas, se mudarmos o ano para 2000, ele é divisível por 4, é um ano do século e também é divisível por 400. Portanto, 2000 é um ano bissexto.
- Da mesma forma, se mudarmos o ano para 2012, ele é divisível por 4 e não é um ano do século, portanto, 2012 é um ano bissexto. Não precisamos verificar se 2012 é divisível por 400 ou não.
Aqui está o código Java equivalente: Programa Java para verificar o ano bissexto
Exemplo 2: programa Kotlin para verificar o ano bissexto usando a expressão 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.") )
Ao executar o programa, a saída será:
2012 é um ano bissexto.
No programa acima, em vez de usar uma instrução if else, usamos uma expressão when.
A when
expressão funciona como:
- Quando o ano é divisível por 4
- Outra
when
expressão é inserida que verifica se o ano é divisível por 100- Se sim, ele verifica novamente se o ano é divisível por 400 ou não, e retorna
true
oufalse
- Se sim, ele verifica novamente se o ano é divisível por 400 ou não, e retorna
- Se não for divisível por 100, o ano não é um ano do século (terminando com 00) e retorna
true
- Outra
- Se o ano não for divisível por 4, ele retorna
false
Com base no valor de leap, ele imprime a saída usando um if else inline.