Foro sobre Java SE > Alguien me puede decir a que se debe este error?
Accedes a una posición de la lista que no existe.
choces
Te lo dice la excepción. Estás accediendo a un elemento de la lista que no existe. En este caso intentas acceder al primer elemento pero la lista está vacía: Index: 0, Size: 0
miLista parece tener elementos, pero no así miLista2
Un saludo
UnoPorAhi
Mire este es el codigo donde agrego los elementos alas listas me pueden ayudar a encontrar el error se lo agradeceria Gracias
package Canicas;
import java.awt.Color;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Tablero extends Imagen {
private int [][]tab ;
private Color [][]color;
private int anc;
private int Lar;
private boolean val,val2;
ArrayList <Canicas> miLista = new ArrayList<Canicas>();
ArrayList <Bumper> miLista2 = new ArrayList<Bumper>();
public Tablero(int x,int y){
super((x),(y));
/*this.tab=new int[x][y];
color=new Color[x*100][y*100];
for(int i =0;i<(x*100);i++){
for(int j=0;j<(y*100);j++){
color[i][j]= new Color(255,255,255);
this.setColor(i, j, color[i][j]);
if((i%100)==0){color[i][j]= new Color(0,0,0);
this.setColor(i, j, color[i][j]);}
if((j%100)==0){color[i][j]= new Color(0,0,0);
this.setColor(i, j, color[i][j]);}
}
} */
this.anc=x;
this.Lar=y;
}
public void agregarCanica(Canicas c){
if((miLista.contains(c))==false){
miLista.add(c);
}
}
public void agregarBumper(Bumper b){
if((miLista2.contains(b))==false){
miLista2.add(b);
}
}
public int getAncho(){
return this.anc;
}
public int getLargo(){
return this.Lar;
}
public String TamañoTablero(){
return "El tablero tiene un tamaño de : \nCuadros de Ancho: "
+anc+"\nCuadros de Largo: "+Lar;
}
public void Validar(Canicas c){
if(c.getX()>=this.getAncho()){val=false;}
else{val=true;}
if(c.getY()>=this.getLargo()){val2= false;}
else{val2=true;}
}
public void ImprimirCanicas(){
for (int i = 0; i <miLista.size(); i++) {
Canicas c = miLista.get(i);
System.out.println("Hay una canica en la posicion ("+c.getX()+","+c.getY()+")");
}
}
public void ImprimirBumper(){
for (int i = 0; i <miLista2.size(); i++) {
Bumper b = miLista2.get(i);
System.out.println("Hay un bumper en ("+b.getX()+","+b.getY()+")");
}
}
}
bachnonymus
Para buscar este tipo de problemas existen los Debuggers.
Me niego a instalarme un compilador en un ojo, y un Debugger en otro, para poder contestar a este tipo de cuestiones en este foro.
Si no quieres, o no sabes, usar un Debugger, al menos publica un código completo, compilable y ejecutable, por si algún "alma" del foro se "anima" a copiarlo y depurarlo por ti.
choces
No hay mucho que agregar a lo ya dicho por choces. Además, pones los métodos agregar*** que son los que cargan las listas, pero no desde donde se les llama. Así, y sin bola de cristal, solo podemos perder el tiempo.
Tutoriales sobre como usar debugger en Eclipse y Netbeans:
https://www.youtube.com/watch?v=lFLFxVUUD74
https://www.youtube.com/watch?v=xCvoSnR-PQg
Un saludo
UnoPorAhi
Muchas gracias Ya logre solucionar el problema que tengan un buen dia
bachnonymus
debes ver que la lista no venga nula ni vacia
zaida
buenas tardes como llegaron a solucionar este tema?tambien estoy en la misma vaina
si me podrian dar una manito porfa
Gustavo
Error 500: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
por favor me podáis decir a que se debe este error? muchas gracias
Emilia
El error IndexOutOfBoundsException indica que estás intentando acceder a un índice que no existe en una de las listas, específicamente en tab.miLista2. Esto suele ocurrir cuando la lista está vacía o tiene menos elementos que tab.miLista.
Para solucionarlo, asegúrate de que ambas listas (miLista y miLista2) tengan el mismo tamaño antes de hacer el acceso. Puedes agregar una comprobación para evitar que se intente acceder a un índice fuera de rango:
if (tab.miLista.size() == tab.miLista2.size()) {
for (int i = 0; i < tab.miLista.size(); i++) {
tab.miLista.get(i).move();
Canicas c = tab.miLista.get(i);
tab.miLista2.get(i).bump(c); // Aquí ya no debería dar error
}
} else {
System.out.println("Las listas no tienen el mismo tamaño.");
}
Esto asegura que ambas listas tengan el mismo tamaño antes de acceder a los elementos.
_______________________________________________________________
Maestro de programación de EBC | Soy programador profesional | Me gusta la música.
marcoshernandez

Buenos DIas
Le agredeceria si alguien me puede ayudar a solucionar este error Muchas gracias
do{
Scanner lector = new Scanner(System.in);
opc = lector.nextLine();
for(int i=0;i<tab.miLista.size();i++){
tab.miLista.get(i).move();
Canicas c = tab.miLista.get(i);
tab.miLista2.get(i).bump(c);// aca esta el error
}
tab.ImprimirCanicas();
System.out.println("\n\nOprima una tecla seguida de enter para mover las canicas");
System.out.println("Si desea Salir Oprimar la letra s ");
}while(!opc.equals("s"));
y este es el error que tiene
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Canicas.Principal.main(Principal.java:105)