elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema Fecha Anterior
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema Fecha Anterior  (Leído 1,179 veces)
overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
Problema Fecha Anterior
« en: 25 Noviembre 2012, 21:52 pm »

El ejercicio consiste en decir, dadas dos fechas, cual es anterior, haciendo comprobaciones anteriores para saber si son correctas,contando años bisiestos.

Si la primera fecha es incorrecta la salida será: Primera fecha incorrecta.
Si la segunda fecha es incorrecta la salida será: Segunda fecha incorrecta.
Si son iguales: Representan el mismo día.
Si la primera fecha es anterior a la segunda: La primera es anterior.
Si la segunda fecha es anterior a la primera: La segunda es anterior.

Mi solución es la siguiente:

Código
  1. import java.util.*;
  2.  
  3. public class fechaCorrecta
  4. {
  5.    public byte dia = 0,mes = 0;
  6.    public short anyo = 0;  
  7.  
  8.    public fechaCorrecta(byte dia,byte mes,short anyo)
  9.    {
  10.        this.dia = dia;
  11.        this.mes = mes;
  12.        this.anyo = anyo;
  13.    }
  14.  
  15.    public boolean compruebaFecha()
  16.    {
  17.        boolean esBisiesto;
  18.        esBisiesto = (this.anyo % 4 == 0 && this.anyo % 100 != 0) || ( this.anyo % 400 == 0);
  19.        switch(mes)
  20.        {
  21.            case 1:
  22.            case 3:
  23.            case 5:
  24.            case 7:
  25.            case 8:
  26.            case 10:
  27.            case 12:
  28.                if(this.dia < 0 || this.dia > 31) return false;
  29.                else return true;
  30.            case 4:
  31.            case 6:
  32.            case 9:
  33.            case 11:
  34.                if(this.dia < 0 || this.dia > 30) return false;
  35.                else return true;
  36.            case 2:
  37.                if(esBisiesto)
  38.                {
  39.                    if(this.dia < 0 || this.dia > 29) return false;
  40.                    else return true;
  41.                }
  42.                else
  43.                {
  44.                    if(this.dia < 0 || this.dia > 28) return false;
  45.                    else return true;
  46.                }
  47.            }
  48.            return false;
  49.    }
  50.  
  51.    public boolean equals(Object o)
  52.    {
  53.        return (o instanceof fechaCorrecta) && (this.dia == ((fechaCorrecta)o).dia) && (this.mes == ((fechaCorrecta)o).mes) && (this.anyo == ((fechaCorrecta)o).anyo);
  54.    }
  55.  
  56.    public boolean compruebaMenorUno(fechaCorrecta fechaDos)
  57.    {
  58.        return (this.anyo < fechaDos.anyo) || (this.anyo == fechaDos.anyo && this.mes < fechaDos.mes) || (this.anyo == fechaDos.anyo && this.mes == fechaDos.mes && this.dia < fechaDos.dia);
  59.    }
  60.  
  61.    public static void main(String args[])
  62.    {
  63.        Scanner entradaTeclado = new Scanner(System.in).useLocale(Locale.US);
  64.        byte diaUno = 0,mesUno = 0,diaDos = 0,mesDos = 0;
  65.        short anyoUno = 0,anyoDos = 0;
  66.        diaUno = entradaTeclado.nextByte();
  67.        mesUno = entradaTeclado.nextByte();
  68.        anyoUno = entradaTeclado.nextShort();
  69.        diaDos = entradaTeclado.nextByte();
  70.        mesDos = entradaTeclado.nextByte();
  71.        anyoDos = entradaTeclado.nextShort();
  72.        fechaCorrecta fechaUno = new fechaCorrecta(diaUno,mesUno,anyoUno);
  73.        fechaCorrecta fechaDos = new fechaCorrecta(diaDos,mesDos,anyoDos);
  74.  
  75.        if(!fechaUno.compruebaFecha()) System.out.print("Primera fecha incorrecta.");
  76.        else
  77.        {
  78.            if(!fechaDos.compruebaFecha()) System.out.print("Segunda fecha incorrecta.");
  79.            else
  80.            {
  81.                if(fechaUno.equals(fechaDos)) System.out.print("Representan el mismo día");
  82.                else
  83.                {
  84.                     if(fechaUno.compruebaMenorUno(fechaDos)) System.out.print("La primera es anterior.");
  85.                     else System.out.print("La segunda es anterior.");
  86.                }
  87.            }
  88.        }
  89.    }
  90. }

Todos los casos que yo he probado a mano me han dado resultados correctos, sin embargo a la hora de entregarlo en el portal de autocorrección de la universidad me marca errores por codificación ( siendo los resultados numéricos correctos ). Le he enviado un correo al profesor y me ha contestado que ve un fallo gordo en una comparación que falla por haberla puesto como asignación.

No veo ningún fallo así de gordo, de hecho esos los marca el compilador, ¿ a que creéis que hace referencia?

Un saludo ;)



En línea

[/url]
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema anterior resulto,tengo otro ahora
Software
bob76 1 1,576 Último mensaje 13 Julio 2003, 12:08 pm
por Songoku
campos de fecha mysql y funciones de fecha php
PHP
SirLanceCC 9 9,368 Último mensaje 3 Enero 2008, 12:36 pm
por Hans el Topo
Problema con fecha en programa . bat... « 1 2 »
Scripting
jconnor 10 11,157 Último mensaje 2 Junio 2011, 20:52 pm
por yelopez
Problema con Fecha !!
Ingeniería Inversa
TrashAmbishion 1 2,351 Último mensaje 13 Marzo 2014, 20:44 pm
por tincopasan
Ejercicios de inclinación pélvica anterior
Foro Libre
Tia Renata 7 4,056 Último mensaje 3 Agosto 2021, 16:37 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines