Class ArrayIndexOutOfBoundsException : error [codigo]

Iniciado por bash, 13 Noviembre 2015, 15:45 PM

0 Miembros y 1 Visitante están viendo este tema.

bash

Saludos a todos.

tengo una duda tengo en mi codigo un arreglo que me da el error del titulo pero el arreglo que tengo es de 5  * 5 entonces no se por que me da error que dice que estoy accediendo  a un indice que esta fuera de rango por favor si alguien me puede aconsejar seria un exito.. dejo el codigo.

Código (java) [Seleccionar]




TileMap(String s,int size)
{
tilesize = size;
try
{

BufferedReader br = new BufferedReader(new FileReader(s));
mapwidth = Integer.parseInt(br.readLine());
mapheight = Integer.parseInt(br.readLine());
System.out.printf("width [%d], height[%d]",mapwidth , mapheight);

map = new int[mapheight][mapwidth];
System.out.printf("Lenght [%d}",map.length);



String del = " ";

for(int row = 0;row < map.length ;row++ )
{
String line = br.readLine();
String[] tokens = line.split(del);
System.out.printf("Tokens [%s]\n", tokens);

                         



                             ///for(int col = 0; col < mapheight; col++)
                              for(int col = 0; col < map[row].length; col++)
{
System.out.printf("[%d],",Integer.parseInt(tokens[col]));
 
                                           ///eclipse me redirecciona aqui.
                                         map[row][col] = Integer.parseInt(tokens[col]);
}
System.out.printf("\n");

}
br.close();
}catch(Exception e)
{
e.printStackTrace();
}

}

public void update()
{

}

public void draw(Graphics2D g)
{
for(int row = 0; row < map.length; row++)
{
for(int col= 0; col < map[row].length; col++)
{
int rc = map[row][col];
if(rc == 0)
{
g.setColor(Color.BLACK);
}
if(rc == 1)
{
g.setColor(Color.RED);
}
g.fillRect(x+col *tilesize, y + row * tilesize, tilesize, tilesize);
}
}


}




}





Gracias por los consejos.
gracias por responder mis dudas

ivancea96

#1
¿Qué línea tira la excepción?

Edito: Acabo de leer el comentario.

Código (java) [Seleccionar]
Integer.parseInt(tokens[col]);
tokens[col] es la posibilidad que veo. En ningún lugar compruebas que tokens vaya a tener un tamaño mayor o igual a mapHeight.

bash

es en esa linea pero el tamano es fijo.


for(int col = 0; col < map[row].length; col++)

for(int col = 0; col < mapheight; col++)
gracias por responder mis dudas

ivancea96