jueves, 22 de noviembre de 2012

Ejercicio 15 PRO (Version 0.2)

/* 15.    Hacer un programa que compruebe si una fecha con el formato: dia, mes, año es correcta.
 * Hay que controlar todas las situaciones anómalas que se puedan dar.
 * Los meses de 31 días son: 1,3,5,7,8,10,12.
 * NOTA: utilizar la sentencia swith para diferenciar los meses de la fecha
 */

/* Me he tomado la libertad de obligarte a escribir bien la fecha, JA!*/

import java.util.Scanner;

public class ejercicio15 {

    public static void main(String[] args) {

        Scanner reader = new Scanner(System.in);

        int dia;
        int mes;
        int ano;
        boolean bisiesto;
        int diaMax;

        System.out.println("Introduce La fecha: ");
        System.out.println("Dia: ");
        dia = reader.nextInt();
        System.out.println("Mes: ");
        mes = reader.nextInt();
        System.out.println("Año: ");
        ano = reader.nextInt();
        while (ano < 0) {
            System.out.println("Guru meditation: 000000000001");
            System.out.println("Año no puede ser menor que 0;");
            System.out.println("Introduzca un nuevo año: ");
            ano = reader.nextInt();
        }
        /*
         * 1º ver si el Año es Bisiesto o no, para ver si mes 2 puede tener
         * posible dia 29. Mes > 1 && < 12, para saber si tiene 30, 31, (28 ||
         * 29) dias. Y comprobar que Dia > 1 && < (31 || 30 || 29 || 28)
         */

        if ((ano % 4 == 0) && ((ano % 100 != 0) || (ano % 400 == 0)))
            bisiesto = true;
        else
            bisiesto = false;

        while (mes > 12) {
            System.out.println("Guru meditation: 000000000002");
            System.out.println("Solo hay 12 meses;");
            System.out.println("Introduzca un nuevo mes: ");
            mes = reader.nextInt();
        }
        while (mes <= 0) {
            System.out.println("Guru meditation: 000000000003");
            System.out.println("Mes debe ser positivo;");
            System.out.println("Introduzca un nuevo mes: ");
            mes = reader.nextInt();
        }

        switch (mes) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            diaMax = 31;
            break;
        case 2:
            if (bisiesto == true) {
                diaMax = 29;
            } else {
                diaMax = 28;
            }
            break;
        default:
            diaMax = 30;
        }
        while (dia <= 0 || dia > diaMax) {
            System.out.println("Guru meditation: 000000000004");
            System.out.println("Día no puede tener ese valor;");
            System.out.println("Introduzca un nuevo dia: ");
            dia = reader.nextInt();
        }
        System.out.println("La fecha introducida: " + dia + "-" + mes + "-"
                + ano + " es correcta.");
        System.out.println("END_OF_LINE");
    }
}

1 comentario: