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

Ele deveria dar false mas da true

O meu código compila mas ele deveria devolver false mas devolve true

código Conta

public class Conta {
    double saldo = 100;
    int agencia;
    int numero;
    Cliente 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) {
        if(this.saldo >= valor) {
            this.saldo -= valor;
            destino.deposita(valor);
            return true;
        } else {
            return false;
    }
  }     
}    

Código TestaSacaNegativo

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

    }
}
2 respostas
solução!

Oi Cauê, tudo bem com você?

O conta.saca(200) devolve true, pois na sua classe Conta, o atributo saldo está sendo inicializado com 100 reais:

public class Conta {
    double saldo = 100;
    int agencia;
    int numero;
    Cliente titular; 

Portanto, quando você depositou os 100 reais depois, o seu saldo passou a valer 200 reais! O que faz com que o saque de 200 reais seja um sucesso (retornando true) e ainda por cima zera o valor do saldo:

true
0.0

Espero ter ajudado, se ficou qualquer dúvida é só avisar!

Bons estudos!!

Acertou em cheio! Era exatamente isso que estava acontecendo. Fiz isso e deu certo! Obrigado.