Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/10/2013, 19:57
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 17 años
Puntos: 260
Sonrisa Respuesta: Problema con getMaximum (GregorianCalendar)

Hola,

Básicamente el problema es la precedencia de los operadores,

if (día > calendario.getMaximum(GregorianCalendar.DAY_OF_MON TH)
|| día < 1 && mes < 1 || mes > 12) {

La precedencia de los operadores en java es primero el and y despues el or. Suponiendo que la fecha es 31/Nov, primero se evalúa:

dia < 1 && mes < 1 y devuelve falso.

Seguidamente se evalúa:

dia > cale.. || (expresion anterior) y devuelve true.

Por último se evalúa:

(expresion anterior) || mes > 12 y devuelve false.

Me imagino que querías hacer lo siguiente, (aunque no estoy seguro), posiblemente tengas que agregar o cambiar los paréntesis donde corresponde:

Código Java:
Ver original
  1. if ((día > calendario.getMaximum(GregorianCalendar.DAY_OF_MONTH)
  2.                 || día < 1) && (mes < 1 || mes > 12)) {
Al agregar los paréntesis se cambia la jerarquía de los operadores.

Otra cosa es que no necesitas traducir los días y los meses, Java esta hecho para que funcione en cualquier lenguaje solamente tienes que configurar correctamente el sistema operativo o usar java.util.Locale y java.text.DateFormatSymbols, o algún Formatter.


Saludos,