Mais problemas com matrizes - me ajudem please

1 resposta
marcosslash

Fala galera ainda não consegui resolver o problema que estou tento com matrizes:

Estou tentando fazer uma cópia de uma matriz fonte para outra matriz auxiliar podendo assim fazer testes na matriz auxiliar sem alterar a original mas não estou conseguindo fazer isso.

Vou colocar o código de um trecho do programa e depois vou explicar:

private void cima(int x, int z){
			
			int i,j;
			for(i=0;i<3;i++)
				for(j=0;j<3;j++)
					System.out.print(atual[i][j]);
			        System.out.print("cima \n");
			System.arraycopy(atual,0,auxcima,0,auxcima.length);
			
			auxcima[x][z] = auxcima[x-1][z];
			auxcima[x-1][z] = 0;
			
			atualiza_botao_cima();
			for(i=0;i<3;i++)
				for(j=0;j<3;j++)
			      if (auxcima[i][j] == meta[i][j])
				     NoLugar++;

			R1 = NoLugar;
			jTextField1.setText(Integer.toString(R1));
			NoLugar = 0;
		
		}
		private void baixo(int x, int z){
			int i,j;
			for(i=0;i<3;i++)
				for(j=0;j<3;j++)
					System.out.print(atual[i][j]);
			        System.out.print("baixo \n");
			System.arraycopy(atual,0,auxbaixo,0,auxbaixo.length);
			
			auxbaixo[x][z] = auxbaixo[x+1][z];
			auxbaixo[x+1][z] = 0;
			
			atualiza_botao_baixo();
			for(i=0;i<3;i++)
				for(j=0;j<3;j++)
			      if (auxbaixo[i][j] == meta[i][j])
				     NoLugar++;
			
			R2 = NoLugar;
			jTextField2.setText(Integer.toString(R2));
			NoLugar = 0;
		}

No programa o método cima é chamado e logo depois o método baixo é chamado assim coloquei no inicio de cada código dois for para realizar a impressão da matriz original( no programa ela se chama atual) para saber como ela está chegando em cada função. Como em cada função estou fazendo os testes necessários com a matriz auxiliar era pra matriz atual chegar inalterada em cada função mas isso não acontece ela está mudando e não que parte do código está fazendo isso.

Alguem pode me ajudar a resolver este problema já estou quase desistindo.

Obrigado

1 Resposta

W

ao invez de vc criar um referencia do objeto(matriz auxiliar), vc cria um clone do objeto

ex:

int x[] = {0,1,2,3,4}; int z[] = (int[]) x.clone();

Criado 12 de março de 2005
Ultima resposta 12 de mar. de 2005
Respostas 1
Participantes 2