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

Aula 3 - Métodos com referência...

Criei o código Conta.java como na aula:

public class Conta {
        double saldo;
        int agencia;
        int numero;
        String titular;

       public void deposita(double valor){
             this.saldo += valor;
        }
        public boolean saca(double valor){
               if (this.saldo >= valor){
                       this.saldo  -= valor;
                       return true;
               } else {
                       return false;
               }
        }
        public boolean transfere(double valor, Conta destino, Conta origem){
               if (this.saldo >= valor){
                       this.saldo -= valor;
                       destino.deposita(valor);
                       return true;
               } else {
                       return false;
               }
        }
}

E criei o testeMetodo.java.

public class testeMetodo {
    public static void main(String[] args) {
        Conta conta = new Conta();
        conta.saldo = 100;
        conta.deposita(50);
        System.out.println(conta.saldo);

        boolean conseguiuRetirar = conta.saca(20);
        System.out.println(conta.saldo);
        System.out.println(conseguiuRetirar);

        Conta contaDaMarcela = new Conta();
        contaDaMarcela.deposita(1000);

        contaDaMarcela.transfere(300, conta);
        System.out.println(contaDaMarcela.saldo);
    }
}

Quando tento compilar o testeMetodo, aparece o seguinte erro Error:(15, 23) java: method transfere in class Conta cannot be applied to given types; required: double,Conta,Conta found: int,Conta reason: actual and formal argument lists differ in length

Oque tem de errado?

2 respostas
solução!

Boa tarde, Naiara! Tudo bem?

Pelo o que analisei em seu código, no seu método transfere, ele possui 3 parâmetros que são:

transfere(double valor, Conta destino, Conta origem)

Perceba que na classe testeMetodo, quando você chama o transfere, você está passando apenas 2 parâmetros.

Qualquer dúvida estou à disposição!

Olá Naiara!

Tudo bem?

public boolean transfere(double valor, Conta destino, Conta origem){ if (this.saldo >= valor){ this.saldo -= valor; destino.deposita(valor); return true; } else { return false; } }

No método transfere que você criou você não precisa passar a conta de origem, isso porque quando invoca esse método você já estará usando essa conta, sendo assim altere o seu método removendo a conta de origem.

Espero ter ajudado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software