¡Buenas! Estoy haciendo un ejercicio de JAVA que consiste en determinar los días de la semana en los que cayó una fecha en los últimos 10 años, introduciendo un día y un mes como parámetros.
Este es el código que llevo hecho hasta ahora:
Código Java:
Ver originalimport java.util.GregorianCalendar;
public class Calendario {
public static void main
(String[] args
) {
int día
= Integer.
parseInt(args
[0]); int mes
= Integer.
parseInt(args
[1]);
|| día < 1 && mes < 1 || mes > 12) {
System.
out.
println("Esta fecha no es válida, introduzca otros valores."); }
if(mes
==2 && día
==29 && !calendario.
isLeapYear(calendario.
get(GregorianCalendar.
YEAR))){ System.
out.
println("Este año no es bisiesto, por lo tanto no hay 29 de Febrero \n"); }else{
System.
out.
println("El "+día
+ " de " + MesconLetras
(mes
-1) + " de " + añoactual
+ " es " + DíaconLetras
(calendario.
get(GregorianCalendar.
DAY_OF_WEEK)) + "\n"); }
for (int i = 0; i < 11; i++) {
boolean bisiesto = calendario.isLeapYear(calendario
if (mes == 2 && día == 29 && bisiesto == false) {
System.
out.
println("En el año " + " esta fecha no existió (Año no bisiesto) \n");
} else {
System.
out.
println("En el año " + ", el día "
+ día
+ " de "
+ MesconLetras(mes - 1)
+ " fue "
+ DíaconLetras(calendario
}
}
}
public static String MesconLetras
(int numero
) { switch (numero) {
case 0:
return "Enero";
case 1:
return "Febrero";
case 2:
return "Marzo";
case 3:
return "Abril";
case 4:
return "Mayo";
case 5:
return "Junio";
case 6:
return "Julio";
case 7:
return "Agosto";
case 8:
return "Septiempre";
case 9:
return "Octubre";
case 10:
return "Noviembre";
case 11:
return "Diciembre";
default:
return null;
}
}
public static String DíaconLetras
(int numero
) { switch (numero) {
case 1:
return "Lunes";
case 2:
return "Martes";
case 3:
return "Miércoles";
case 4:
return "Jueves";
case 5:
return "Viernes";
case 6:
return "Sábado";
case 7:
return "Domingo";
default:
return null;
}
}
}
Creo que no voy mal encaminado, sin embargo, tal como está el código, si introduzco como parámetros el 31 del mes 11 (Noviembre), fecha que no existe (pues Noviembre tiene 30 días), el programa me devuelve esto:
Cita: El 31 de Noviembre de 2013 es Domingo
En el año 2012, el día 31 de Noviembre fue Sábado
En el año 2011, el día 31 de Noviembre fue Jueves
En el año 2010, el día 31 de Noviembre fue Miércoles
En el año 2009, el día 31 de Noviembre fue Martes
En el año 2008, el día 31 de Noviembre fue Lunes
En el año 2007, el día 31 de Noviembre fue Sábado
En el año 2006, el día 31 de Noviembre fue Viernes
En el año 2005, el día 31 de Noviembre fue Jueves
En el año 2004, el día 31 de Noviembre fue Miércoles
En el año 2003, el día 31 de Noviembre fue Lunes
En el año 2002, el día 31 de Noviembre fue Domingo
En todos los demás aspectos el programa funciona perfectamente, incluso funciona bien con los bisiestos y el 29 de Febrero. Pero eso falla, sin duda no estoy usando bien el getMaximum...
¿Alguien sabe cuál es mi problema?
Muchas gracias.