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

A condição dentro de um if é executada ?

supondo que na minha classe Conta eu tenha

class Conta{
    private double saldo;
    ...
    public boolean saca(double valor){
        if(saldo >= valor){
            this.saldo -= valor;
            return true;
        }
        return false;
    }

até ai tranquilo, minha duvida é quando eu coloco isso como condição de um if

if(contaDoFulano.saca(10.2)){
 system.out.println("Saque efetuado com sucesso ?????");
}
else{
system.out.println("Não foi possível ?????")
}

ou seja, eu estou realmente subtraindo o VALOR do SALDO, ou só estou passando um valor booleano ? O código é escutado dentro dos parênteses ou é só testado ?
2 respostas

Você está subtraindo também.

Para que entre no seu IF, deverá acessar o método informado. E somente após efetuar a conta é que o JAVA saberá se a resposta é TRUE ou FALSE. Portanto, ele é obrigado a fazer a conta ANTES de lhe responder.

solução!

Olá Daniel,

Bem a resposta é sim, você pode fazer isso. Uma prova disso é que com:

ContaPoupanca cp = new ContaPoupanca(12, 21);
cp.deposita(100);

if(cp.saca(50)) {
    System.out.println("Pode sacar");
    System.out.println("O saldo agora é " + cp.getSaldo());
}

A saida no console é

Pode sacar
O saldo agora é 50.0

Mas é claro que isso não é muito recomendado, por conta da legibilidade do código. Isso dificultaria você e outras pessoas lerem esse código.

Algo do tipo é mais indicado

ContaPoupanca cp = new ContaPoupanca(12, 21);
cp.deposita(100);        

boolean SaquePermitido = cp.saca(50);

if(SaquePermitido) {

    System.out.println("Pode sacar");
    System.out.println("O saldo agora é " + cp.getSaldo());
}

Mas agora, talvez a sua duvida seja por conta do método saca estar dentro do if, realmente o if oque importa ali dentro é true ou false, mas ao chamar um método dentro do if ele realmente vai executar o método, tanto o return false ou true, quanto a subtração do saldo e etc...