Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução

package com.github.lucasdevrj.controledesaldobancario;

import java.math.BigDecimal;

public class ContaBancaria {

    private String titular;
    private BigDecimal saldo = BigDecimal.ZERO;

    public ContaBancaria(String titular) {
        this.titular = titular;
    }

    public String getTitular() {
        return "Titular: " + titular;
    }

    public String getSaldo() {
        return "Saldo atual: R$%s".formatted(saldo);
    }

    public void exibe() {
        System.out.println(getTitular());
        System.out.println(getSaldo());
    }

    public void depositar(BigDecimal valor) {
        if (valor.compareTo(BigDecimal.ZERO) > 0) {
            saldo = saldo.add(valor);
            System.out.printf("O valor de R$%.2f foi depositado com sucesso.\n", valor);
        } else {
            System.out.printf("Digite um valor maior que %s para depositar.\n", BigDecimal.ZERO);
        }
        exibe();
    }

    public void sacar(BigDecimal valor) {
        if (valor.compareTo(saldo) < 0) {
            saldo = saldo.subtract(valor);
            System.out.printf("O saque de R$%.2f foi realizado com sucesso.\n", valor);
        } else {
            System.out.println("Saldo insuficiente.");
        }
        exibe();
    }
}
/**
 * Você está desenvolvendo um sistema para um banco digital. Os clientes precisam confiar que suas
 * transações serão seguras e que o sistema nunca permitirá que eles gastem mais do que possuem em
 * conta. Seu desafio é garantir essa segurança nas operações financeiras de depositar e sacar.
 *
 * Crie uma classe que:
 *
 * Permita criar contas com titular e saldo inicial.
 * Realize depósitos com valores positivos.
 * Autorize saques apenas quando houver saldo suficiente.
 * Exiba o saldo atualizado após cada operação.
 * Exemplo de entrada:
 *
 * Conta conta = new Conta("Ana");
 * conta.depositar(1000.00);
 * conta.sacar(1200.00);
 * conta.exibirSaldo();
 *
 * Saída esperada:
 * Saldo insuficiente para saque.
 * Saldo atual de Ana: 1000,00
 *
 * Ou, caso Ana deposite 1000,00 e saque 200,00 a mensagem será:
 *
 * Saldo atual de Ana: 800,00
 */

package com.github.lucasdevrj.controledesaldobancario;

import java.math.BigDecimal;

public class Principal {
    public static void main(String[] args) {
        ContaBancaria contaBancaria1 = new ContaBancaria("Mike de Sousa");
        ContaBancaria contaBancaria2 = new ContaBancaria("Lorena Garcia");

        contaBancaria1.depositar(new BigDecimal("100.00"));
        System.out.println();
        contaBancaria1.depositar(new BigDecimal("0.00"));
        System.out.println();
        contaBancaria1.sacar(new BigDecimal("150.00"));

        System.out.println("-------------------------");
        contaBancaria2.depositar(new BigDecimal("200.00"));
        System.out.println();
        contaBancaria2.sacar(new BigDecimal("120.00"));
        System.out.println();
        contaBancaria2.sacar(new BigDecimal("81.00"));
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Beleza?

1 resposta

Olá, Lucas! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o BigDecimal para garantir precisão nos cálculos com Java, utilizou muito bem o método compareTo para validar valores e ainda compreendeu a importância da segurança nas operações financeiras para evitar inconsistências no saldo.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Tratamento de exceções: adicionar mensagens claras para erros inesperados.
  • Encapsulamento: manter os atributos privados e expor apenas métodos seguros.
  • Validação de entrada: garantir que valores nulos ou inválidos não sejam processados.

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Ah, uma pergunta: Você acha mais importante priorizar a precisão com BigDecimal em cálculos bancários ou investir em mensagens claras para o usuário durante operações financeiras?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!