1
resposta

Chamada de metodo

No metodo de sacar, eu criei um if com um else dizendo que se o valor de saque não fosse maior ou igual o saldo, estourasse um sysout informando "valor não suficiente". Em seguida criei o metodo de transferir, que também faz um if e chama o metodo saca. O processo ocorre todo certo, mas só quando tem saldo.. Quando não tem saldo suficiente ele não estoura a mensagem do metodo saca que foi incluso dentro do metodo transfere, apenas não faz nada.. Por que isso acontece?

public void saca(double valor) {
    if (valor <= saldo) {
        this.saldo -= valor;
    } else {
        System.out.println("saldo insuficiente");
    }
}

public boolean transfere(double valor, Conta destino) {
    if (this.saldo >= valor) {
        saca(valor);
        destino.deposita(valor);
        return true;
    }
    return false;
}
1 resposta

Olá, Marcos.

Na sua descrição você mencionou se o valor de saque não fosse maior ou igual o saldo. Porém, o código que você implementou ele compara se o valor é MENOR ou IGUAL. No exemplo abaixo adicionei o operardor ! para inverter a condição.

PS: Talvez seja mais interessante você inverter a condição paravalor >= saldo; Em outras palavras, você estaria perguntando: o valor que quero sacar é maior do que meu saldo? Se sim " Saldo insuficiente"; Senão this.saldo -= valor;

Espero ter ajudado.

public void saca(double valor) {
    if (!valor <= saldo) {
        this.saldo -= valor;
    } else {
        System.out.println("saldo insuficiente");
    }
}