Java - error de rango en el ciclo for

 
Vista:
Imágen de perfil de nelson
Val: 17
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

error de rango en el ciclo for

Publicado por nelson (11 intervenciones) el 24/03/2018 16:43:41
imagem1

tengo este codigo en blue j , el cual asi tal cual como esta me corre perfecto , pero resulta que al sacarle el 6 (en el for) y poner un 8 me arroja error

imagen-error

lo que estoy haciendo es conprobar la fecha, que los dias esten entre el 1 y el 31 , lo mismo con el mes y el año, en este formato (yy/yy/yyyy) , para hacer esto estoy sacando una subcadena para quedarme solo con los numeros , luego esa cadena de numeros la guardo en un string cadena, por lo que me queda un string de 8 caracteres, luego esta cadena se la paso al if dentro del for , para que conpruebe si hay alguna letra.
por lo tanto este for deveria repetirse desde el 0 al 7 osea hasta el indice 8. y no hasta el 6 porque si asi fuera no alcansaria a llegar hasta los 2 ultimos caracteres.
eso es lo que no entiendo porque me funciona con el 6 y no con el 8.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jesus Dario
Val: 17
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

error de rango en el ciclo for

Publicado por Jesus Dario (5 intervenciones) el 25/03/2018 08:34:36
pues compañero, la verdad no veo el error, pero porque no lo intentes con el length?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error de rango en el ciclo for

Publicado por Juan (58 intervenciones) el 26/03/2018 12:32:20
Es normal que te de fuera de rango por que tu cadena es de 6 y no de 8 ...
El año coges solo dos dígitos...fecha.trim().substring(6,8) solo coge dos dígitos.. Tendría que hacer fecha.trim().substring (6,fecha.length) desde que inicia año hasta el final...claro sino arreglas esto con la cadena de 6 no te entrara en el if (comp==8) para verificar los meses y días y año... Te aconsejo para formatear fecha y que sean dígitos utilices una expresión regular que se te quedaría en una condición y después compruebas toda la fecha para que sea una fecha válida... Que si acaba el mes indicado en 30 o 31...y cuando sea febrero acabe en 28 o 29 si es bisiesto o no ...hay te dejo una idea...
Espero haber me explicado bien...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar