Foros del Web » Programación para mayores de 30 ;) » Java »

excepciones

Estas en el tema de excepciones en el foro de Java en Foros del Web. Hola, alguien podria decirme que significa esta excepcion: java.lang.StringIndexOutOfBoundsException: String index out of range: -11 El caso es que hay veces que el codigo me ...
  #1 (permalink)  
Antiguo 25/01/2012, 05:40
Avatar de godisa  
Fecha de Ingreso: noviembre-2011
Mensajes: 46
Antigüedad: 12 años, 5 meses
Puntos: 1
excepciones

Hola,
alguien podria decirme que significa esta excepcion: java.lang.StringIndexOutOfBoundsException: String index out of range: -11

El caso es que hay veces que el codigo me lo ejecuta bien y otras mal. Cuando me lo ejecuta mal siempre se queda parado en el mismo punto
os pongo la funcion donde se queda parado:
Código PHP:
 private static void transformar_datos(String str) {
       
int i=0,j=0,p=0;//contadores
       
String str2,str3,str4,str21,str31,str41,cadenaAencontrar,cadenaAreemplazar,cadenaAencontrar2;
 
       
       
//OBTENGO LA FECHA DE REINICIO DEL SISTEMA
           
        
str21 = new String();
        
//cadena que vamos a buscar
       
cadenaAencontrar = new String();
        
cadenaAencontrar"System Up Time:";
        
//i es el indice de la cadena encontrada,nos da la primera ocurrencia de la cadena a encontrar
        
i=str.indexOf(cadenaAencontrar,0);
      
        
//Extraemos la cadena que va desde el indice de la cadena a econtrar al final
        
str21=str.substring(i-1);
       
        
        
cadenaAencontrar2 = new String();
        
cadenaAencontrar2"System Date and Time (local time zone)";
       
        
j=str.indexOf(cadenaAencontrar2,0);
        
        
str31 = new String();
        
str31=str.substring(j);
        
        
str41= new String();
        
str41=str.substring(ij);  
        
str41.trim();
       
        
         
Vector w1 =new Vector();//en este vector introduzco la linea que he buscado pero sin los espacion en blanco
         
int h=0;
         
         
StringTokenizer tokens3=new StringTokenizer(str41" ");
                
         while(
tokens3.hasMoreTokens()){//mientras haya espacios en blanco
             
String datotokens3.nextToken();
             try{
                 
w1.insertElementAt(dato,h); //insertamos el dato en el vector en la posicion h
                 
h++;
             }catch (
Exception e){} 
         }
         
String fechaReinicio= (String) w1.elementAt(3);
         
fechaActualReinicio =Integer.parseInt(fechaReinicio);//guardamos la Fecha de reinicio del switch
         
System.out.println(" fecha de reinicio "+fechaActualReinicio );
         
         
         
        
         
//OBTENGO LOS DATOS
        // str=str.replaceAll("\n", "-");//quito todos los retornos de carro de la cadena
         
str2 = new String();
       
         
//cadena que vamos a buscar
      
cadenaAencontrar = new String();

         
cadenaAencontrar"Late Coll.</th>";
         
//i es el indice de la cadena encontrada,nos da la primera ocurrencia de la cadena a encontrar
         
i=str.indexOf(cadenaAencontrar,0);
         
//Extraemos la cadena que va desde la cadena a econtrar al final
         //en str2 tenemos la cadena desde donde quiero que empiecen los datos hasta el final
         
str2=str.substring(i+15);
               
//System.out.println(" lo que hay en str2\n "+str2);
         //str3 me sirve para saber cual es la posicion final de lo que quiero copiar
         //en str3 tengo desde la ultima posicion de lo que quiero copiar hasta el final del documento
        
         
cadenaAencontrar = new String();    
         
cadenaAencontrar"<br><H4>Memory Ressources";
         
//j indice donde se encuentra el final de lo que quiero copiar
         
j=str.indexOf(cadenaAencontrar,0);
         
       
//str3 = new String();
         
str3=str.substring(j-10);
         
         
System.out.println(" lo que hay en str3\n "+i+"     "+j);
  
         
//en str4 tengo la cadena final con los datos que necesito
       
str4= new String();
         
str4=str.substring(i+15j-10);  
           
System.out.println(" lo que hay en str4 "+str4);
         
//reemplazo por espacios o guiones los simbolos correspondientes al lenguaje html
        
cadenaAreemplazar = new String();
         
cadenaAreemplazar="<tr><th>";
         
String str5str4.replace(cadenaAreemplazar,"");//inicio fila
        
         
cadenaAreemplazar="</th></tr>";
         
String str6str5.replace(cadenaAreemplazar,"-");//fin de fila
        
         
cadenaAreemplazar="</th><th>";
         
String str8str6.replace(cadenaAreemplazar,"-");//separacion entre los datos
         
         
cadenaAreemplazar ="/";
         
String str7str8.replace(cadenaAreemplazar,"-");//separacion entre los datos
          
         //este bucle es el encargado de ir dandonos los datos que nos interesan para meterlos
         //en una matriz de enteros
             
         
StringTokenizer tokens = new StringTokenizer(str7,"\n");
             
//System.out.println("cadena str7"+str7);
             
str7=str7.replaceAll("\n""-");
               
System.out.println("cadena str7"+str7);
         while(
tokens.hasMoreTokens()){
             
tokens.nextToken();//vamos al siguiente salto de linea
             
StringTokenizer tokens2=new StringTokenizer(str7"-");
                   
             while(
tokens2.hasMoreTokens()){//mientras haya guiones
                 
String w tokens2.nextToken(); //vamos al siguiente guion,en w guardo el dato
                 
try{
                     
Integer.parseInt(w);//convierto el dato a entero
                     
crear_matriz(p);
                 }catch (
Exception e){} 
             }
         }
         
mostrar_matriz(matriz);
         
System.out.println(" fin Procesar datos");
   } 

Lo ultimo que sale antes de la excepcin es esta linea: System.out.println(" fecha de reinicio "+fechaActualReinicio );

Gracias

Saludos
  #2 (permalink)  
Antiguo 25/01/2012, 06:30
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: excepciones

Esa excepción te está diciendo que te estás saliendo fuera de los índices del string, es decir, si tienes un string de longitud n, los índices del string son desde el 0 hasta el n-1.

Ese error te puede dar en cualquier operación que realices con strings y le indiques que partes del string quieres (y le estés diciendo posiciones incorrectas).

Ejemplo de método que te puede devolver este error es substring.

Utiliza el depurador y ejecuta paso a paso y te darás cuenta de donde te da la excepción.

Saludos.

Etiquetas: excepciones, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:04.