Índice de lista fuera de límites (-1

Creé una página VF con 2 botones 1 para agregar texto de entrada 1 por 1 y 2 para eliminar texto de entrada 1 por 1. El proceso está funcionando 1 am bale para agregar y eliminar. Pero cuando se trata del último texto de entrada, es un error. Por ejemplo: si agrego 3 texto de entrada 1,2,3, puedo eliminar 3,2, pero cuando elimino el primero, es un error. Índice de lista fuera de los límites: 1

aqui esta mi codigo

cancel de referencia de página pública () {

system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew Out ' + eqLstNew.size());
integer i =0;
  if( i<eqLstNew.size()){
    i++;
    system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew 1st ' + eqLstNew.size());
    system.debug('@@@@@@@@@@@@@@@@@@@ i size ' + i);
    eqLstNew.remove(i);

  }
  return null;
}

¿Alguien puede encontrar la solución y decirme qué está mal en el código?

gracias anu

preguntado el 03 de mayo de 12 a las 08:05

2 Respuestas

Haz el i++ llamar al final de la if:

public PageReference cancel() {
system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew Out ' + eqLstNew.size());
integer i =0;
  if( i<eqLstNew.size()){
    system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew 1st ' + eqLstNew.size());
    system.debug('@@@@@@@@@@@@@@@@@@@ i size ' + i);
    eqLstNew.remove(i);
    i++;
  }
  return null;
}

Pero no entiendo por qué estás usando una variable para esto. Si siempre desea devolver el primer elemento, debe escribirlo así. Usar una variable extra (que siempre tiene el mismo valor) lo hace más complicado.

public PageReference cancel() {
  if(eqLstNew.size() > 0){
    eqLstNew.remove(0);
  }
  return null;
}

contestado el 03 de mayo de 12 a las 09:05

No sé por qué lo hice tan complicado. Pero de cualquier manera está funcionando, gracias por su respuesta. - anu raj

Espera, ¿no había un bucle allí antes? ¿O acabo de leer "si (yo Matt Lacey

El primer elemento de la lista está en el índice 0, no en el índice 1. Funciona cuando hay más de 1 elemento porque en realidad estás eliminando el segundo elemento de la lista cuando haces list.remove(1). Debería estar haciendo list.remove(0) en su lugar si desea eliminar el primer elemento.

contestado el 03 de mayo de 12 a las 09:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.