Esercitazione Java programma per verificare se un certo anno è bisestile

L'anno bisestile, per chi non lo sapesse, è un anno composto da 366 giorni anziché 365.

L'anno bisestile (o anno bisesto) cade ogni quattro anni per compensare l'imprecisione del calendario tradizionale: la rotazione della terra attorno al sole, infatti, non dura esattamente 365 giorni ma circa 365 giorni e 6 ore e, per questo motivo, nel 1584, si è deciso di aggiungere un giorno ogni 4 anni al fine di recuperare il ritardo accumulato nei tre anni precedenti.

Per sviluppare il codice, quindi,  per determinare se un anno è bisestile o meno è sufficiente verificare una serie di condizioni:

  • l'anno deve essere maggiore di 1584 (anno in cui fu introdotto l'anno bisestile)
  • Inoltre:
    • l'anno deve essere divisibile per 400
    • oppure l'anno deve essere divisibile per 4 ma non per 100.

Vediamo in Java un programma che consente di determinare se un anno è bisestile oppure no

package anno_bisestile;
import java.util.Scanner;
public class Anno_bisestile {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Scrivi un anno qualsiasi e ti dirò se è bissestile( >1584 )");
/*lettura dei parametri di input */
int anno= scanner.nextInt(); //variabile di INPUT intera
if(anno <1584) System.out.println("Hai inserito una data non valida");    
        else if (bisestile(anno))
                        System.out.println("e' bisestile");
                        else
                        System.out.println("NON e' bisestile");
     }//end main

 public static boolean bisestile(int data){
            boolean bis;                //variabile bis booleana (true or false)
            if(data%4==0){                     // se è divisibile per 4
                        if(data%100==0){ /* se è divisibile per 100 allora per essere bisestile deve essere divisibile per 400 */
                                               if(data%400==0) { bis = true; }
                                                      else { bis = false; }          /* non divisibile per 400 */
                               }
                             else bis = true; /* è divisibile per 4 ma non per 100 */
                     }
            else bis = false; /* non e’ divisibile per 4 */
return bis;
}
}