O código completo exibido não ajuda muito mas dá uma dica. Perceba que antes de chamar o seu método c1.recuperaDadosParaImpressao() o seu código main chama o método c1.calculaRendimento() compartilhe o código desse método para eu dar uma olhada, todavia acredito que é na chamada dele que seu saldo tenha sido trocado.
L
lsramos
Esse é o método calculaRendimento:
doublecalculaRendimento(){returnthis.saldo*=0.1;}
Mesmo quando eu tiro as duas linhas acima do metodo recuperaDadosParaImpressao (saldo e calculaRendimento), ele retorna o mesmo valor.
Solucao aceita
Jonathan_Medeiros1 like
Você não pode atribuir no saldo o valor do rendimento, se não ambos terão os mesmos valores!
Seu método deveria estar assim:
doublecalculaRendimento(){returnthis.saldo*0.1;}
adriano_si
Estranho, dê uma olhada com calma no que você está fazendo e implemente a mudança do @Jonathan_Medeiros.
Basicamente no seu método calculaRendimento você está reatribuindo o saldo a seu atributo saldo e obviamente irá substituí-lo essa linha
returnthis.saldo*=0.1;
o java converte pra você em
returnthis.saldo=this.saldo*0.1;
É apenas um sintaxe sugar (dê uma pesquisada sobre o termo usado para linguagens de programação) que a JVM lhe oferece para você digitar menos código.
Qualquer coisa avisa aí.
Abraços
L
lsramos
Adriano e @Jonathan_Medeiros, obrigada pelas respostas.
Testei e tive um retorno correto.
Eu sabia que o java (e outras linguagens) fazia essa conversão/atribuição com o uso do *=, mas nem cogitei que poderia ser isso.
De qualquer forma, muito obrigada. Reforcei o conceito e vou seguir o aprendizado
Ivan_Matuck
Estou fazendo este exercício e fiz assim:
classConta{Stringtitular;intagencia;Stringconta;doublesaldo;StringdataAbertura;publicvoidsaca(doublevalor){this.saldo=this.saldo-valor;System.out.println("\nValor sacado da conta: "+valor);}publicvoiddeposita(doublevalor){this.saldo=this.saldo+valor;System.out.println("\nValor depositado na conta: "+valor);}publicdoublecalculaRendimento(){returnthis.saldo*0.1;}publicdoublesaldoComRendimento(){returnthis.saldo+=this.saldo*0.1;}publicStringrecuperaDadosParaImpressao(){Stringdados="Titular: "+this.titular;dados+="\n Agência: "+this.agencia;dados+="\n Conta: "+this.conta;dados+="\n Saldo: "+this.saldo;dados+="\n Rendimento mensal: "+this.calculaRendimento();dados+="\n Data de abertura: "+this.dataAbertura;returndados;}}classContaTestes{publicstaticvoidmain(String[]args){Contac=newConta();c.titular="Pedro";c.agencia=1234;c.conta="45678-9";c.saldo=1000;c.dataAbertura="25/07/68";System.out.println("\nSaldo atual: "+c.saldo);c.deposita(100);System.out.println("\nSaldo atual: "+c.saldo);System.out.println("\nRendimento mensal: "+c.calculaRendimento());System.out.println("\nSaldo atual com rendimento: "+c.saldoComRendimento());c.saca(200);System.out.println("\nSaldo atual: "+c.saldo);System.out.println("\nDados da conta:\n"+c.recuperaDadosParaImpressao());}}
RESULTADO:
Saldo atual: 1000.0
Valor depositado na conta: 100.0
Saldo atual: 1100.0
Rendimento mensal: 110.0
Saldo atual com rendimento: 1210.0
Valor sacado da conta: 200.0
Saldo atual: 1010.0
Dados da conta:
Titular: Pedro
Agência: 1234
Conta: 45678-9
Saldo: 1010.0
Rendimento mensal: 101.0
Data de abertura: 25/07/68