0 votos
por (540 puntos) en Java
Hola, quiero que me ayuden a verificar si mi código está bien hecho;

es un ejercicio donde se pide diseñar una clase llamada "Fecha" cuyos

objetos deben gestionar información tipo dd/mm/aaaa. Los atributos han

de ser inaccesibles desde el exterior (private), debe facilitar métodos

constructores de objetos Fecha, debe facilitar un método que devuelva un

String de la forma dd/mm/aaaa, debe facilitar la comparación de fechas

(si son iguales o si una es mayor que otra) y debe facilitar un método

que permita redefinir el valor de la fecha gestionada por un objeto Fecha.

Mi code es:

<pre lang='java'>public class Fecha {

private int dia;
private int mes;
private int año;

private int dd/mm/aa;

public int fecha() {
return fecha;
}

public Fecha(int dia, int mes, int año) {  // Inicio del método constructor
dia=dd;mes=mm;año=aaaa;

if dia>0 {
if dia<=31 {
dia=dd;

return(true);
 }
}

else {
return(false);
}

if mes>0 {
if mes<=12 {
mes=mm;
 return(true);
 }
}

else {
return(false);
}

if año>=1910 {
if año<=2010 {
año=aaaa
return(true);
 }
}

else {
return(false);
}

} // Fin del método constructor

public int consultarDia() {
return dia;
}

public int consultarMes() {
return mes;
}

public int consultarAño() {
return año;
}

public Fecha1(dia1,mes1,año1) {
dia1=dd;mes1=mm;año1=aaaa
}

public Fecha2(dia2,mes2,año2) {
dia2=dd;mes2=mm;año2=aaaa
}

Fecha Fecha1 = newFecha(dia1,mes1,año1),
      Fecha2 = newFecha(dia2,mes2,año2);

/*
* Comparar si Fecha1 es mayor que Fecha2
*/

if (año1>año2) {
return(true);
}

else {
if(año1==año2) {
if(mes1>mes2) {
return(true);
  }
 }
}

if(mes1==mes2) {
if(año1==año2) {
if(dia1>dia2) {
return(true);
  }
 }
}

else {
return(false);
}

/*
* Comparar si Fecha1 es igual a la Fecha2
*/

if(año1==año2) {
if(mes1==mes2) {
if(dia1==dia2) {
return(true);
  }
 }
}

else {
return(false);
}

4 Respuestas

0 votos
por (8.5k puntos)
Buenas,

Para empezar no se si en el ejercicio os permiten usar la clase Date de Java, si os permiten deberías de reutilizar muchos de esos métodos. after, before, etc.

http://download.oracle.com/javase/1.6/docs/api/java/util/Date.html#after(java.util.Date)

También podrías utilizar un parseador para darle el formato dd/MM/yyyy

http://download.oracle.com/javase/1.6/docs/api/java/text/SimpleDateFormat.html

En caso de no puedas usar la clase Date, vas bien encaminado, pero hay alguna cosa que tienes que controlar, por ejemplo no todos los meses tienen 31 días, por lo tanto no puedes aceptar el día 31 en todos los casos, tendrían que validar ese valor en función del mes.

Para comprobar si dos fechas son iguales, deberías implementar el método equals(Object obj) que tienen todas las clases por defecto y adaptarlo a tus necesidades.

Espero que te sirva,

Un saludo


0 votos
por (8.5k puntos)
Buenas otra vez,

Hay bastantes fallos en ese código, no lo has compilado nunca? que usas para desarrollar? un IDE como Eclipse o un programa de texto?

Cosas como:

private int dd/mm/aa; (eso no es un entero válido)

public int fecha() { (no existe el campo fecha en ningun sitio)
return fecha;
}
Te las detectaría automáticamente un entorno de desarrollo como Eclipse o Netbeans, te recomiendo que uses alguna para empezar.

Un saludo


0 votos
por (540 puntos)
Si, en casa usaremos según nos dijeron Eclipse, en el Centro de Ingeniería usamos como un cmd (simbolo del sistema) donde poner todos los comandos.

Y no nos dejan usar Date :(


0 votos
por (540 puntos)
¿Esto estaría bien? Mirad:

public class Fecha {

private int dia;

private int mes;

private int anio;

public Fecha(int _dia, int _mes, _anio) {

dia=_dia;

mes=_mes;

año=_anio;

}

public int consultaDia() {

return dia;

}

public int consultaMes() {

return mes;

}

public int consultaAnio() {

return anio;

}

public void modificaDia(int _dia) {

dia=_dia;

}

public void modificaMes(int _mes) {

mes=_mes;

}

public void modificaAnio(int _anio) {

anio=_anio;

}

public Fecha consultarFecha() {

return this;

}

public FormatoFecha() {

return ( dia + " / " + mes + " / " + anio );

}

public int comparararFecha( Fecha fecha ) {

       int resultado = 0;

      if ( anio < fecha.consultaAnio() ) {

         resultado = -1;

      }

      else if ( anio > fecha.consultaAnio() ) {

         resultado = 1;

      }

      else {       

         if ( mes < fecha.consultaMes() ) {

            resultado = -1;

         }

         else if ( mes > fecha.consultaMes() ) {

            resultado = 1;

         }

         else {   

            if ( dia < fecha.consultaDia() ) {

               resultado = -1;

            }

            else if ( dia > fecha.consultaDia() ) {

               resultado = 1;

            }

            else {

               resultado = 0;

            }

         }

      }   

      return resultado;

   }

/** En el método compararFecha, hay 3 resultados posibles

* Que una fecha sea menor que otra, en cuyo caso el resultado

* es -1, que sean iguales, donde el resultado es 0, o que

* una fecha sea mayor que otra, y tiene como resultado 1.

*/

private boolean esBisiesto( int anio ) {

      return (( ((anio % 4) == 0) &amp;&amp; ((anio % 100) != 0) )

             || ((anio % 400) == 0) );

   }

/** Los años divisibles por 4 son bisiestos,

* excluyendo los años que se dividen por 100,

* y los que se dividen por 400 también lo son.

*/

private int obtenerDiasMes( int mes ) {

int diasMes = 0;

switch( mes ) {  // Esta instrucción sirve para encontrar el valor de la variable "mes" en varios casos.

         case 1:

         case 3:

         case 5:

         case 7:

         case 8:

         case 10:

         case 12:

            diasMes = 31;

         case 4:

         case 6:

         case 9:

         case 11:

            diasMes = 30;

         case 2:

            if (esBisiesto( anio ))

               diasMes = 29;

            else

               diasMes = 28;

               }

      return diasMes;

}

private int obtenerDiasMes( int mes ) {

return obtenerDiasMes( obtenerMes(mes) );

}


Preguntas relacionadas

0 votos
2 respuestas
preguntado por Soulent (20 puntos) Abr 20, 2022 en Java
0 votos
0 respuestas
0 votos
1 respuesta
preguntado por panda282953 (20 puntos) Ene 26, 2019 en Java
0 votos
1 respuesta
preguntado por Bafina (20 puntos) Ene 28, 2016 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...