Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/10/2010, 02:23
Avatar de Fuzzylog
Fuzzylog
 
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: [DUDA] Clase "Fecha"

Truco para comparar... compones dos String con añomesdia y los parseas a enteros y luego comparas.

En cuanto a tantos ifs.... debes hacer un if y dentro (condicion1 && condicion2 && condicion3).

No abuses de los returns.. si haces un return sales del método por lo que si retornas antes de hacer todas las comparaciones te va a dar resultados incorrectos, en todo caso usa un boolean y cambialo a false en caso de que no cumpla la condición, y luego si sigue siendo true pasas a la siguiente condicion, etc. El return lo haces al final dependiendo de si se verifica o no.

En cuanto al constructor creo que no lo has entendido bien

public Fecha(int dd, int mm, int aaaa) { // Inicio del método constructor --> Fijate bien q los he nombrado de forma distinta. Si pones dia1, mes1, ano1 debes cambiar esos valores pq el programa no los reconocerá.
// Comprobaciones
//1º formato -> Cambias ints a Strings y comparas el tamaño. Si length() de los strings es distinta de 2 en dia o mes, y distinta de cuatro en año, se han introducido datos incorrectos
// 2 Mes ... debe estar entre 1 y 12 ok
// 3 Dia ... depende de cada mes debe estar entre 1 y 30/31, y en el caso especial de mes == 2 (febrero) debe ser 28, o 29 en años bisiestos (y debes implementar la comprobacion de bisiesto tb).
//Si se cumplen los datos
// Forma de setear los datos
this.dia = dd; // porque puse int dd en la declaración del método constructor
this.mes = mm;
this.ano = aaaa; // EVITA LA ñ!!!
//Si no se cumplen
throw new Exception... //La que sea. Igual tienes que decirle al programa que va a lanzar una excepción al declarar el constructor. Míralo.
}

// Obtiene la fecha con este formato
private String getFechaFormateada(Fecha f) {
String fechaComp = String.valueOf(f.dia) + "/" + String.valueOf(f.mes) + "/" String.valueOf(f.ano);
return fechaComp; // Devuelve la fecha con el formato dado a partir de una fecha que has creado con dia, mes y año por separado.
}

Aún queda mucho por pulir, pero espero que te sirva de guía