Cita:
Iniciado por Fuzzylog 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
Pfffffff, apenas he dado 3 o 4 clases de Programación y muchas cosas de las que dices me sirven y otras me suenan a chino, pero nos mandaron hacer esto para ver qué tal vamos...
Ya me di cuenta de las eñes, pondré year en vez de año o algo así, además cambiaré tantos ifs agrupándolos entre paréntesis, y según oí en el constructor no se pueden poner valores booleanos "true" o "false" porque el constructor no devuelve nada.
Mas o menos voy entendiendo mis errores, pero modificar el código de tal manera que lo entienda (asequible para haber hecho 3-4 clases de Programacion I en mi Ingeniería) es lo que quiero hacer xd