Índice de array fora do limite

Bom dia pessoal, não consigo encontrar onde o ídice do array está saindo do limite… neste código. Alguém pode me ajudar?

public class Cavalo
{
	int linhaAtual=0;
	int colunaAtual=0;
	int lance=0;

int[][]tabuleiro = new int[8][8];

public void move(int[][]tabuleiro1,int h,int v)
{
	int linha = linhaAtual+h;
	int coluna = colunaAtual+v;
	if(linha>=0 && linha<8)
		if(coluna>=0 && coluna<8)
			if(tabuleiro1[linha][coluna]!=1)
		
			{
				tabuleiro1[linha][coluna]=1;
				linhaAtual=linha;
				colunaAtual=coluna;
				lance++;
			}

}

public void imprime(int[][]tabuleiro1)
{
	for(int lin=0;lin<tabuleiro1.length;lin++)
	{
		for(int col=0;col<tabuleiro1[lin].length;col++)
		{
			if(tabuleiro1[lin][col]==1)
				System.out.print(" *");
			else
				System.out.print("  ");
		}
			System.out.println();
	}

	System.out.printf("%d movimentos\n",lance);
}
}

public class TesteCavalo
{
	public static void main(String[] args)
	{
		Cavalo cavalo = new Cavalo();
		int[] vertical = new int[8];
		int[] horizontal = new int[8];
	
	horizontal[0]= 2;
	horizontal[1]= 1;
	horizontal[2]= -1;
	horizontal[3]= -2;
	horizontal[4]= -2;
	horizontal[5]= -1;
	horizontal[6]= 1;
	horizontal[7]= 2;

	vertical[0]= -1;
	vertical[1]= -2;
	vertical[2]= -2;
	vertical[3]= -1;
	vertical[4]= 1;
	vertical[5]= 2;
	vertical[6]= 2;
	vertical[7]= 1;

	for(int i=0;i<64;i++)
	{
		for(int j=0;j<8;j++)
		{
			cavalo.move(cavalo.tabuleiro,horizontal[j],vertical[j]);
			if(cavalo.tabuleiro[horizontal[j]][vertical[j]] ==1)
				break;
		}
	}

	cavalo.imprime(cavalo.tabuleiro);

}//end of main
}

Epder, veja o trecho de código abaixo que refiz do seu fonte:

// o laço bidimensional das movimentações declaradas acima
for(int i=0;i < vertical.length-1;i++)
{
        for(int j=0;j < horizontal.length-1;j++)
        { 
            cavalo.move(cavalo.tabuleiro,horizontal[i],vertical[j]);
            if (cavalo.tabuleiro[i][j] == 1) break; 
        }
}

Você está tentando passar para o vetor tabuleiro o valor da movimentação horizontal e vertical do objeto cavalo. Ou seja, a movimentação possui valores negativos nas posições do tabuleiro.

1 curtida

Jubinha, muito obrigado, tinha perdido um tempao tentando achar o erro. Valeu mesmo pela força…
Abçs

1 curtida