Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

Desafio Bancário com números validados

Percebi que tinha uma "falha" na matemática do código: caso digitassem um número negativo, os calculos de transferência invertiam. Daí foi necessário criar outra condicional em cada um para garantir que os números inseridos fossem maiores que 0. (Caso exista uma maneira melhor de validar, me digamm)

E ficou assim:

import java.util.Scanner;

public class DesafioBanco {
    public static void main(String[] args) {
        Scanner leitor = new Scanner(System.in);
        String nomeCliente = "Isabella Lucio";
        String tipoConta = "Corrente";
        double saldo = 1000;
        int escolha = 0;
        double recebido = 0;
        double transferido = 0;

        String dadosCliente = """
                ***************************************************************
                Nome: %s
                Tipo de conta: %s
                Saldo inicial : %.2f
                ***************************************************************
                """.formatted(nomeCliente, tipoConta, saldo);
        System.out.println(dadosCliente);

        String mensagemInicio = """
                
                1- Consultar saldo
                2- Receber valor
                3- Transferência de valor
                4- Sair
                Digite a opção desejada abaixo:
                """;
        while (escolha !=4 ){
            System.out.println(mensagemInicio);
            escolha = leitor.nextInt();
            if (escolha == 1) {
                System.out.println(String.format("Seu saldo atual é: %.2f",saldo));

            } else if (escolha == 2) {
                System.out.println("Digite o valor a ser recebido: ");
                recebido = leitor.nextDouble();
                if (recebido <= 0){
                    System.out.println("Digite um valor maior que 0");
                } else {
                    saldo += recebido;
                    System.out.println("Seu saldo agora é: " + saldo);
                }

            }else if (escolha == 3) {
                System.out.println("Digite o valor a ser transferido: ");
                transferido = leitor.nextDouble();
                if (transferido <=0) {
                    System.out.println("Digite um valor maior que 0");
                } else if (transferido > saldo) {
                    System.out.println("Não há saldo para realizar transferência");
                } else {
                    saldo -= transferido;
                    System.out.println("Seu saldo agora é: " + saldo);
                }
            } else if (escolha == 4) {
                System.out.println("Você saiu.");
            } else {
                System.out.println("Número inválido, tente novamente.");
            }
        }
    }
}
1 resposta
solução!

Oi, Isabella. Tudo bem com você?

Parabéns por compartilhar sua solução. A validação que você adicionou faz bastante sentido e resolve um caso que realmente pode ocorrer quando a entrada do usuário não é restringida. Sua abordagem de verificar se o valor é menor ou igual a zero antes de realizar a operação é uma forma simples, clara e eficiente de tratar esse cenário.

Parabéns pela atenção aos detalhes. Continue compartilhando suas soluções. O fórum permanece à disposição para acompanhar sua evolução e esclarecer dúvidas.

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