to estudando java acompanhando um livro aqui e tem uns exercícios pra fazer, um deles é este:
:arrow: criar uma classe que simule os inteiros para utilizar inteiros de até 40 dígitos, representando cada inteiro numa array onde cada elemento é um dígito. A classe deve conter as operações soma, subtração.. e blablablá, basicamente as operações dos ints.
A classe eu to fazendo sem problemas, só que surgiu uma coisa que eu não entendi... por exemplo quando eu vou testar o seguinte código:
InteiroGigante ig = new InteiroGigante(+3);
System.out.println(InteiroGigante.subtrair(ig, ig));
//subtração(na verdade ajusta os sinais e chama a adição...)
public static InteiroGigante subtrair(InteiroGigante a, InteiroGigante b) {
//.getInverso() retorna o mesmo número com sinal oposto, e não altera as variáveis do número original.
InteiroGigante resultado = InteiroGigante.adicionar(a, InteiroGigante.getInverso(b));
return(resultado);
}
:arrow: o bug eh que ele devia retornar 3 - 3 = 0 , mas retorna -3 -3 = -6 :shock:
pq??? :(
eu acho que é porque ambos os InteirosGigantes que eu utilizo no método subtrair estão ligados a uma mesma referência, aí ele altera os 2. ou algo assim...
Se não for, alguém aí sabe e pode me explicar ?
como eu faço para isto não acontecer ?
[]'s pessoal