Hola buenas estoy realizando una página en jsp y me saca la siguiente excepción String index out of range:-20 que tipo de fallo en el código me puede estar dando este error, muchas gracias y un saludo¡
1 Respuesta
Respuesta de krlosnow
1
1
krlosnow, Mas de 15 años de experiencia en Java, Javascript y HTML
Sin ver el código es un poco difícil, pero imagino que estás intentando hacer un substring o algo así, y los índices que estas utilizando están fuera de rango. Si no es eso, por favor, añade el código fuente y te podré ayudar mejor. Un saludo y no olvides valorar mi respuesta ;-) Carlos.
Hola haber si tu lo ves por que yo estoy mica de revisarlo jeje, em_senal 1,2,3,4 tienen un tamaño de 250 caracteres, el codigo va extrallendo bloques de 25 caracteres, cada em_senal tiene 10 palabras try{ for (int i=0;i<32;i++) { if (ba_senales!='*') { if (i<10) { //dado que el �ltimo parametro no tiene porque tener 25 caracteres, lo trataremos aparte if (i==10-1) nombreParametro=em_senal_1.substring(i*25,em_senal_1.length()); else nombreParametro=em_senal_1.substring(i*25,(i+1)*25); } else if (i<20) { //dado que el �ltimo parametro no tiene porque tener 25 caracteres, lo trataremos aparte if (i==20-1) nombreParametro=em_senal_2.substring((i-10)*25,em_senal_2.length()); else nombreParametro=em_senal_2.substring((i-10)*25,(i+1-10)*25); } else if (i<30) { //dado que el �ltimo parametro no tiene porque tener 25 caracteres, lo trataremos aparte if (i==30-1) nombreParametro=em_senal_3.substring((i-20)*25,em_senal_3.length()); else nombreParametro=em_senal_3.substring((i-20)*25,(i+1-20)*25); } else if (i<40) { //dado que el �ltimo parametro no tiene porque tener 25 caracteres, lo trataremos aparte if (i==40-1) nombreParametro=em_senal_4.substring((i-30)*25,em_senal_4.length()); else nombreParametro=em_senal_4.substring((i-30)*25,(i+1-30)*25); } //analizamos el estado del parametro que se est� estudiando if (ba_senalesr=='0') { estadoParametro="OFF"; if ((i>=0&&i<6)||(i>=17-1&&i<=32-1)) { background_color="blue"; } else { background_color="green"; } } else { estadoParametro=i<8?"ACTIVA":"ON"; if ((i>=0&&i<6)||(i>=17-1&&i<=32-1)) { background_color="green"; } else { background_color="red"; } } estadoBaliza = new Parametros(nombreParametro,estadoParametro,background_color); } } }catch(Exception e){ %> <script>alert("Error señales: <%=e.getMessage()%>")</script> <% }
Yo que tú pondría algunos System.out.println() para ver por dónde falla. De todas formas, para sacar el último nombreParámetro, omite el segundo parámetro del substring. Solo necesita saber desde donde, y te obtendrá el substring desde ese punto hasta el final de la cadena. Lo tienes en los "if (i==10-1)" De todas formas, te aconsejo lo de las trazas. Ahorrarás bastante tiempo.