Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Método "roda()" não recebe valor e imprime saldo 0.

Método roda: public void roda(Conta c) { System.out.println("Saldo anterior: " + c.getSaldo()); c.atualiza(this.selic); System.out.println("Saldo Atualizado: " + c.getSaldo()); this.saldoTotal += c.getSaldo();

}

Sua impressão: Saldo anterior: 0.0 Saldo Atualizado: 0.0 Saldo anterior: 0.0 Saldo Atualizado: 0.0 Saldo anterior: 0.0 Saldo Atualizado: 0.0 Saldo Total: 0.0 1010.0 1020.0 1029.897


Main: public static void main(String[] args) {

Conta c = new Conta(); Conta cc = new ContaCorrente(); Conta cp = new ContaPoupança(); AtualizadorDeContas adc = new AtualizadorDeContas(0.01);

adc.roda(c); adc.roda(cc); adc.roda(cp);

System.out.println("Saldo Total: " + adc.getSaldoTotal());

c.deposita(1000); c.atualiza(0.01);

c.info();

cc.deposita(1000); cc.atualiza(0.01); cc.info();

cp.deposita(1000); cp.atualiza(0.01); cp.info();

}

Superclasse Conta: public class Conta {

protected double saldo ;

public double getSaldo(){ return this.saldo; } public void setSaldo(double saldo){ this.saldo = saldo; }

public void deposita(double valor){ this.saldo += valor; }

public void saca(double valor){ this.saldo -= valor; } public void atualiza(double taxa){

this.saldo += this.saldo * taxa; } public void info(){ System.out.println(this.getSaldo());

} }

Pelo que parece o método "roda()" não recebe os valores dos objetos criados em Conta retornando nenhum saldo. Onde estou errando?

2 respostas

Jefferson, o seu programa está fazendo exatamente o que deveria:

1° - Você cria 3 contas: c - Conta cc - Conta Corrente cp - Conta Poupança

Você não colocou o construtor das classes conta corrente e poupança, logo assumo que o saldo delas também inicie com o valor 0;

2° - Você cria o atualizadorDeContas(0.01), penso que em seu construtor esse valor deve ser passado a alguma variável como Selic.

3° - você executa o método roda do atualizadorDeContas: ele imprime o saldo atual do objeto (0), e depois invoca o método atualiza da conta.

4° - no método atualiza você multiplica o valor da taxa pelo saldo, como todos os saldos estão com valor 0, e todo número multiplicado por 0 é igual a 0, as 3 contas terão saldos anteriores e atualizados zerados.

5° - Você invoca o método depositar, alterando o valor do saldo das contas, e depois o método atualizar, multiplicando esse valor de saldo pela taxa (1000 * 0.01), é exatamente esse resultado que é exibido no seu console.

Está tudo correto, se você quer que as contas tenham algum valor de saldo quando são criadas, você deve implementar isso em seu construtor ou invocando um método set antes de utilizar o atualizadoDeContas.

solução!

Fala mano beleza? olha o seu código... Nessa parte.

adc.roda(c); adc.roda(cc); adc.roda(cp);

System.out.println("Saldo Total: " + adc.getSaldoTotal());

Ta vendo que você está chamando o seu metodo e passando um objeto instanciado? e repare que ele está com o valor 0, e depois ta mandando imprimir com o System.out.println na saida o resultado correto? Claro sua lógica não está tão errado assim. Tenta chamar o metodo depositar antes do seu metodo roda. ficando assim.

c.deposita(1000); c.atualiza(0.01);

c.info();

cc.deposita(1000); cc.atualiza(0.01); cc.info();

cp.deposita(1000); cp.atualiza(0.01); cp.info();

Aqui você esta setando o seu metodo, passando um valor para o deposito, esse valor, ficara salvo na sua variavel, depois chama o metodo e mostra o saldo salvo em sua variavel.

adc.roda(c); adc.roda(cc); adc.roda(cp);

System.out.println("Saldo Total: " + adc.getSaldoTotal());

Você estava chamando o seu metodo antes de passar um valor para sua variavel, por isso que o seu metodo não saia do 0.0 Tenta ve se da certo, abraço