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(i, j);
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 dato= tokens3.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+15, j-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 str5= str4.replace(cadenaAreemplazar,"");//inicio fila
cadenaAreemplazar="</th></tr>";
String str6= str5.replace(cadenaAreemplazar,"-");//fin de fila
cadenaAreemplazar="</th><th>";
String str8= str6.replace(cadenaAreemplazar,"-");//separacion entre los datos
cadenaAreemplazar ="/";
String str7= str8.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{
p = 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