Olá pessoal,
Estou com um super problema com matrizes:
Estou fazendo um programa onde utilizo várias matrizes [3][3], uma delas é a mais impotante e não posso perdê-la logo tenho que fazer cópias dela para outra matriz. Mas não estou conseguindo fazer isso.
Estou declarando outra matriz auxiliar onde faço:
matriz_auxiliar = matriz_original
mas isso não funciona porque depois que eu faço os testes necessários na matriz auxiliar a matriz original tb muda…
Alguém sabe o que pode estar ocorrendo???
Obrigado pela ajuda
Ola Marcos.
O problema é que quando vc faz:
copia = original;
vc igualou a referencia, e não fez copia nenhuma, então tudo que é modificação em um vai refletir no outro… tá mas java não existe ponteiro, isto já foi provado que não é bem assim…
eu aconselharia vc a fazer uma copia na não:
int[][] a = new int[3][3];
...
int[][] b = new int[3][3];
for(int x=0;x<3;x++){
for(int y=0;y<3;y++){
b[x][y] = a[x][y];
}
}
Bruno,
o pior é que eu já tentei isso e até que pra aquele momento funcionaou mas depois acrescentei mais código e a matriz voltou a dar problema de uma olhada no código:
[code]
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("\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
auxcima[i][j]= atual[i][j];
auxcima[x][z] = atual[x-1][z];
auxcima[x-1][z] = 0;
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;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
System.out.print(atual[i][j]);
System.out.print("\n");
}[/code]
Acrescentei dois conjuntos de for um no começo do código para visualizar como esta chegando a matriz original na função( no programa a matriz é chamada de atual) e depois coloquei o mesmo código de impressão da matriz no final para visualizar como a matriz está saindo da função e adivinha??? Tá saindo errado ela está sendo modificada em algum lugar e não sei qual é.
De uma olhada ai e v c vc pode me ajudar
Desde já obrigado
Bruno recebi uma notificação de resposta lá do GUJ e parece que o que eles disseram vai dar certo.
C vc quiser dar uma olhada:
http://www.guj.com.br/posts/list/21384.java#113082
Valeu cara
Até mais
sim sim sim, eu tinha esquecido do metodo arraycopy… mas tenta ai, é bem provavel que de certo sim.