Ejercicio 12. Año bisiesto

Escribe un programa que reciba un año y nos diga si es bisiesto o no.

Para la realización de este ejercicio debemos saber cuales son las condiciones por las que se rigen los años bisiestos.

Un año es bisiesto si es un número divisible por 4, pero no si es divisible por 100, excepto que también sea divisible por 400.

Así leído a bote pronto parece un trabalenguas, pero analicemos paso a paso y veamos cual sería la forma más óptima para poder hacer nuestra estructura condicional en Java.

  • Si es divisible por 4 (bisiesto)
    • Si es divisible por 100 (no es bisiesto)
      • Si es divisible por 400 (es bisiesto)

Como vemos en el párrafo anterior, de forma escalonada, vemos que para realizar la estructura condicional no podemos hacerlo leyendo de arriba a abajo, pues si comprobamos en primer lugar si es divisible por 4, nuestro programa ya no calculará si es divisible por 100 ó 400, que además tienen un concepto más restrictivo.

Por este motivo, hemos decidido hacerlo de forma inversa, primero comprobamos si es divisible por 400, si lo es, ya sabemos que será primo, si no lo es, probamos con 100, si lo es, no será primo, si tampoco es divisible por esta cantidad, ya probaremos por 4, si es divisible será bisiesto, y si no es divisible, no lo será.

  • Si divisible por 400, es bisiesto
  • Si divisible por 100, no es bisiesto
  • Si divisible por 4, es bisiesto
  • Si nada de lo anterior, no es bisiesto.
package estructurasAlternativas;

/**
12 Ejercicios Estructuras Alternativas en Java

Programa:
Escribir un programa que lea un año indicar si es bisiesto. Nota: un año es bisiesto si es
un número divisible por 4, pero no si es divisible por 100, excepto que también sea divisible
por 400.

@author: manolohidalgo_
@date: 09-11-19
*/

import java.util.Scanner;
// Inicio del programa y declaración de variables:
public class Ejercicio12AnoBisiesto {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int year;

// Solicitud de datos al usuario
    System.out.println("Este programa calcula si un año es bisiesto:");
    System.out.print("Introduce el año: ");
    year = scanner.nextInt();
    
// Realizamos Cálculos y mostramos en pantalla
    if (year % 400 == 0){
        System.out.println("Es un año bisiesto.");
    }else if (year % 100 == 0){
        System.out.println("No es un año bisiesto");
    }else if (year % 4 == 0){
        System.out.println("Es un año bisiesto");
    }else{
        System.out.println("No es un año bisiesto");
    }
    }
  }

Puedes acceder a este ejercicio en GitHub en este enlace

Si tienes alguna duda al respecto, alguna sugerencia o algo que no te haya quedado claro, no tienes más que escribirme en los comentarios, estoy aquí para ayudarte y aprender, ¡Nos leemos!