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

[B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

Estas en el tema de [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B] en el foro de Java en Foros del Web. buenas tardes... necesito su ayuda. Cuando ejecuto un separador de frases de un archivo plano... tengo un string con el texto, el cual me dice ...
  #1 (permalink)  
Antiguo 03/12/2009, 16:29
 
Fecha de Ingreso: octubre-2004
Mensajes: 79
Antigüedad: 19 años, 6 meses
Puntos: 0
[B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

buenas tardes...

necesito su ayuda.

Cuando ejecuto un separador de frases de un archivo plano...
tengo un string con el texto, el cual me dice espacios y todo

y tengo una lista que contiene todas las palabras de ese archivo
concateno las frases segun corresponda y las almaceno en otra lista.
el problema esque cuando recorro la primera lista lo hago hasta size()-1
pero aun asi me envia el error que expuse en el titulo
y es la unica iteracion de ese tipo
la otras son comprobaciones por medio de if o una iteracion con valores reducidos a 5 ( cantidad de palabras de la frase) que no creo tenga que ver

Espero sus posibles soluciones
gracias
  #2 (permalink)  
Antiguo 03/12/2009, 16:33
 
Fecha de Ingreso: diciembre-2009
Mensajes: 32
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

si las palabras estan separadas puedes utilizar:

Código:
String a =  "a,b,c,d";
String[] b= a.split(',');
tu array b kedara asi:
b[0] = a;
b[1] = b;
b[2] = c;
b[3] = d;


te ahorras bastante trabajo
  #3 (permalink)  
Antiguo 03/12/2009, 16:40
 
Fecha de Ingreso: octubre-2004
Mensajes: 79
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

no amigo... gracias por tu respuesta, pero no es lo que busco. Estoy formando frases desde un archivo plano y recorro la lista con las palabras..para cada una de ellas sean comienzo de frase de esta manera:

texto="pedrito tiene un auto azul"
lista.get(0)=pedrito
lista.get(0)=tiene
lista.get(0)=un
lista.get(0)=auto
lista.get(0)=azul

y formo las frases con esos datos
de la siguiente manera

pedrito tiene
pedrito tiene un
pedrito tiene un auto
pedrito tiene un auto azul
tiene un
tiene un auto
tiene un auto azul
un auto
un auto azul
auto azul

gracias
  #4 (permalink)  
Antiguo 03/12/2009, 16:45
 
Fecha de Ingreso: diciembre-2009
Mensajes: 32
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

Si tienes el codigo.. mandalo para analizarlo... y buscar bug's
  #5 (permalink)  
Antiguo 03/12/2009, 16:47
 
Fecha de Ingreso: octubre-2004
Mensajes: 79
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

// lista contiene las palabras ordenadas por indice y texto es la cadena que contiene todo el texto.



try{
String pal="";
int pos=0;
int a=0;
int b=0;
int c=0;
int cant=0;
int pos_siguiente=0;
int largo=0;
String sigui2="";

for(int i=0;i<lista.size()-1;i++){
cont=i;
pal=lista.get(i).toString();
largo=pal.length();
pos=texto.indexOf(pal,pos+1);
pos=pos+largo;
String sigui=lista.get(i+1).toString();
pos_siguiente=texto.indexOf(sigui);

int result=pos_siguiente-pos;
if(result<2){
cant=1;
pal=pal+" "+sigui;
while(cant<5){
sigui=lista.get(i+1).toString();
a=articulo(sigui);
b=preposicion(sigui);
if(a>=1 | b>=1){
if((i+2)<=(lista.size()-1)){
sigui=lista.get(i+2).toString();
}
pal=pal+" "+sigui;
sugerencia.add(pal);
if((i+3)<=(lista.size()-1)){
sigui2=lista.get(i+3).toString();
}
i=i+2;
c=distancias(sigui,sigui2);
if(c<2){
sigui=sigui2;
pal=pal+" "+sigui;
sugerencia.add(pal);
}
}else{
i=i+1;
sigui=lista.get(i+1).toString();
largo=pal.length();
pos=texto.indexOf(pal);
pos=pos+largo;
pos_siguiente=texto.indexOf(sigui);
if((pos_siguiente-pos)<2){
pal=pal+" "+sigui;
sugerencia.add(pal);
}else{
break;
}
}
StringTokenizer st = new StringTokenizer(pal);
cant=st.countTokens();
}
pal="";
sigui="";
sigui2="";
i=cont; pos=0;
pos_siguiente=0;
c=0;
}}
System.out.println(texto);
Iterator muestra= sugerencia.iterator();
while(muestra.hasNext()){
System.out.println("muestra: "+muestra.next());
}

}catch(Exception e){
System.out.println("error sugerencias:"+e);
}
  #6 (permalink)  
Antiguo 03/12/2009, 17:58
 
Fecha de Ingreso: octubre-2004
Mensajes: 79
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

encontre el problema..
ocurre en esta linea:
pos=texto.indexOf(pal,pos+1);
el problema es cuando entra por primera vez al ciclo. la palabra puede estar n-1 veces en el documento y toma la segunda posicion que puede ser al final del archivo y del punto 0 a la posicion n-1 si se resta de la palabra siguiente en posicion da un valor negativo y tambien causa esa excepcion.

la solucion:

crear una variable de tipo entero incializada en 0 fuera del ciclo
y hacer la siguiente sentencia

if(primero==0){
pos=texto.indexOf(pal);
primero=primero+1;
}else{
pos=texto.indexOf(pal,pos+1);
}
asi toma la primera palabra y cuando vuelve a entrar al ciclo toma la siguiente y no proboca excepcion de tipo error
java.lang.IndexOutOfBoundsException
espero sea de ayuda al que en el algun momento tenga esa excepcion si no encuentra la solucion.
Saludos
  #7 (permalink)  
Antiguo 03/12/2009, 19:12
 
Fecha de Ingreso: octubre-2004
Mensajes: 79
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

Lamento informar que n oera ahi el problem
ayuda!!!!
  #8 (permalink)  
Antiguo 04/12/2009, 03:07
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

for(int i=0;i<lista.size()-1;i++){

Si tienes elementos de 0 a size()-1 y deseas dentro de ese bucle evaluar el elemento siguiente al que estás evaluando, es decir, tienes una función que para el elemento lista[0] también coge el elemento lista[1], deberías considerar el truncar el for en size()-2, ya que si no, al coger el último elemento lista[n], en la función interna intentará coger lista[n+1], que se sale del tamaño de la lista...
  #9 (permalink)  
Antiguo 05/12/2009, 12:54
 
Fecha de Ingreso: octubre-2004
Mensajes: 79
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

hola...sigo con el problema...no es eso fuzzylog lo probé de inmediato cuando pensé lo mismo
  #10 (permalink)  
Antiguo 05/12/2009, 21:32
 
Fecha de Ingreso: octubre-2004
Mensajes: 79
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: [B]java.lang.IndexOutOfBoundsException: Index: 181, Size: 181[/B]

si alguien puede aportar algo porfavor seria de gran ayuda
salu2
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 01:45.