Come verificare se un anno è bisestile utilizzando un’unica condizione
Oggi mi va di scrivere una guida su come costruire una condizione unica per verificare una condizione più o meno complessa. In questo caso prenderò come esempio il calcolo di un anno bisestile, in primo luogo perché mi serve personalmente, e già che ci sono ci scrivo su.
La prima cosa che serve fare è capire se è possibile calcolare se un anno è bisestile con una formula matematica. Ho cercato online le linee guida per calcolare l’anno bisestile, che onestamente non conoscevo, e sono ricaduto su questa guida per calcolarlo in excel, che riporterò
- Se l’anno è equamente divisibile per 4, andare al passaggio 2. In caso contrario, procedere con il punto 5.
- Se l’anno è equamente divisibile per 100, andare al passaggio 3. In caso contrario, procedere con il punto 4.
- Se l’anno è equamente divisibile per 400, andare al passaggio 4. In caso contrario, procedere con il punto 5.
- L’anno è bisestile (ha 366 giorni).
- L’anno non è bisestile (ha 365 giorni).
Il nostro intento sarà quello di capire come controllare tutte e 3 le condizioni in un unico if, così da rendere il codice più pulito, e riuscire comunque a determinare il risultato che desideriamo ottenere. Seguendo i 5 punti di cui sopra popoleremo la tabella degli stati che ci consentirà di capire in quali casistiche otteniamo un risultato positivo.
Divisibile per 4 | Divisibile per 100 | Divisibile per 400 | Risultato |
X | NO | ||
V | X | SI | |
V | V | X | NO |
V | V | V | SI |
Il caso dell’anno bisestile è particolarmente agevolato dal fatto che se l’anno è divisibile per 400, allora sarà divisibile anche per 100 e per 4. Se invece non è divisibile per 400 servirà calcolare se è divisibile per 4 e non lo è per 100.
Quindi, la nostra condizione per definire se un anno è bisestile sarà
if (anno%400==0 || (anno%4==0 && anno%100!=0)) {
System.out.print("Bisestile");
} else {
System.out.print("Non bisestile");
}