11
respostas

Por que assim não está pegando a condição?

Bom dia!

Obrigada pela ajuda.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CaixaEletronico
{
    class Conta
    {
        public int agencia;
        public double saldo = 500;
        public Cliente titular;




        public bool Saca(double valor)
        {

            if (this.saldo >= valor && valor >= 0)

            {
                if (this.titular.ehMaiorDeIdade())
                {
                    this.saldo -= valor;

                }
                else
                {
                    double limiteSaque = 200;

                    if (valor <= limiteSaque)
                    {
                        this.saldo -= valor;

                    }
                    else
                    {
                        return false;
                    }
                }

            }

            return false;
        }

        public void Deposita(double valor)
        {
            if (valor > 0)
            {
                this.saldo += valor;
            }

        }

        public void Transfere(double valor, Conta destino)
        {
            this.Saca(valor);
            destino.Deposita(valor);
        }

        public double CalculaRendimentoAnual()
        {
            double saldoDaquelemes = this.saldo;

            for (int i = 0; i <= 12; i++)
            {
                saldoDaquelemes = saldoDaquelemes * 1.007;
            }
            double rendimento = saldoDaquelemes - this.saldo;
            return rendimento;

        }

    }


}
11 respostas

Olá, Tainá, faltou você colocar return true nas condições em que o saque é bem sucedido:

public bool Saca(double valor)
        {

            if (this.saldo >= valor && valor >= 0)

            {
                if (this.titular.ehMaiorDeIdade())
                {
                    this.saldo -= valor;
                    return true; //FALTOU ESTA LINHA
                }
                else
                {
                    double limiteSaque = 200;

                    if (valor <= limiteSaque)
                    {
                        this.saldo -= valor;
                        return true; //FALTOU ESTA LINHA
                    }
                    else
                    {
                        return false;
                    }
                }

            }

            return false;
        }

Boa sorte e bons estudos!

mas é necessario? achava que ao não colocar ele ja entendia como um true!

Não, o que acontece é que execução do método Saca continua até o programa encontrar um retorno, que acontece na última linha, onde é executado return false;

ate encontrar um retorno falso, no caso?

seria tipo um while True ...break ?

Não, o while é um laço que executa o código enquanto a condição for verdadeira. No código acima, não existe um laço, e sim uma execução única. Com o return true, a execução é interrompida nessa linha e o método Saca indica que houve sucesso no saque. Sem o return true, a execução continua e retorna falso na última linha, indicando (erroneamente) que o saque não foi realizado.

esse return true ou falso tem que retornar um texto true ou falso?

O tipo de retorno do método Saca é um bool (public bool Saca(double valor)), então tem que retornar um valor booleano true ou false.

mas aparece em algum lugar digitado isso?

por que no final tem que ter um return false? no final de tudo

Se um método tem um tipo de retorno, todos os "caminhos" que o programa percorrer dentro do método precisam terminar com uma instrução return.

O método Saca tem um tipo de retorno bool, então todos os "caminhos" que o programa percorrer dentro do método precisam terminar em um return true ou return false. Se removermos a última linha, tomamos um erro de compilação.

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