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.
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.
¿Qué línea tira la excepción?
Edito: Acabo de leer el comentario.
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.
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++)
Saca por consola el tamaño del array tokens.