// Lab04.java (C) 2007 adolfo@di-mare.com /** @(#)Lab04.java 2007 Ejemplo de una clase para años bisiestos. Este programa interactivo recibe un año {@code A} y responde si el año es o no bisiesto. Escoja el año {@code A==0} para detener el programa.
  • Cálculo del año bisiesto:
  • Dado un año {@code "A"}, el año {@code "A"} es bisiesto si es múltiplo de 4, exceptuando los múltiplos de {@code 100}, que no son bisiestos, a menos que sean múltiplos de {@code 400}.
  • Ejemplos
  • {@code 1998} no es múltiplo de {@code 4}, por lo tanto, no es bisiesto.
  • {@code 1900} es múltiplo de {@code 4} y de {@code 100}, pero no es múltiplo de {@code 400}, entonces no es bisiesto.
  • {@code 2000} sí es bisiesto.
  • {@code 1988} sí es bisiesto. @author Adolfo Di Mare */ import java.io.*; // Clases para leer desde el teclado import java.lang.System; // Esta siempre la importa Java /** Almacena el año. */ class bisiesto { /** Año almacenado */ private int m_ano; /** Calcula de antemano la cantidad de días del año almacenado. */ private int m_dias; /** Constructor por defecto. */ public bisiesto() { m_ano = 0; m_dias = 366; } /** Constructor para un año específico. */ public bisiesto(int a) { set(a); } /** Retorna la cantidad de días del año. */ public int dias() { return m_dias; } /** Retorna el año. */ public int get() { return m_ano; } /** Cambia el año almacenado en la instancia. */ public void set( int a ) { m_ano = a; m_dias = (es_bisiesto() ? 366 : 365); } /** Retorna "true" cuando el año sí es bisiesto. */ public boolean es_bisiesto() { boolean es; if (m_ano % 100 == 0) { if (m_ano % 400 == 0) { // es = (m_ano % 400 == 0); es = true; } else { es = false; } } else { es = ((m_ano % 4) == 0); } return es; } // bisiesto::es_bisiesto() /** Retorna la cantidad de días que tiene el i-ésimo mes del año.
  • Los meses se numeran desde {@code 1} hasta {@code 12}.
  • Enero es {@code 1} ... Diciembre es {@code 12}. */ public int dias_del_mes(int mes) { int n; switch (mes) { case 4: case 6: case 9: case 11: n = 30; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: n = 31; break; case 2: n = (es_bisiesto() ? 29 : 28); break; default: n = 0; break; } return n; } // dias_del_mes() /** Programa principal. */ public static void main( String args[] ) throws IOException { BufferedReader CIN = new BufferedReader( new InputStreamReader(System.in) ); System.out.println( "Escriba un año (0 para terminar): " ); bisiesto A; A = new bisiesto( 1492 ); while (A.get() != 0) { A.set( Integer.parseInt( CIN.readLine() ) ); System.out.print( "\nEl año " + (A.get()) ); if (!A.es_bisiesto()) { System.out.print( " NO" ); } else { } System.out.println( " es bisiesto" ); } return; } // main() } // bisiesto // EOF: Lab04.java