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!

2
respostas

Desafio

import java.util.Scanner;

public class CaixaEletronico {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int opcao = 0;
        double saldo = 2500;

        String menu = """
                ------------------------------
                 Dados do cliente
                
                 Nome:          João Silva
                 Agencia:       1722
                 Conta:         2357-4
                 ------------------------------
                """;

        System.out.print(menu);

        while (opcao != 4) {
            System.out.println("""
                     Operações:
                    
                     1 - Consultar saldo
                     2 - Receber valor
                     3 - Transferir valor
                     4 - Sair
                    
                    escolha uma opção:
                    """);

            opcao = scanner.nextInt();

            if (opcao == 1) {
                System.out.printf("Saldo total: R$ %.2f%n", saldo);
            } else if (opcao == 2) {
                System.out.println("Digite o valor a depositar: ");
                double valor = scanner.nextDouble();
                saldo += valor;
                System.out.printf("Saldo Atualizado: R$ %.2f%n", saldo);
            } else if (opcao == 3) {
                System.out.println("Digite o valor a transferir: ");
                double valor = scanner.nextDouble();
                if (saldo < valor) {
                    System.out.println("Saldo insuficiente.");
                } else {
                    saldo -= valor;
                    System.out.printf("Saldo atualizado: R$ %.2f%n", saldo);
                }
            } else if (opcao == 4) {
                System.out.println("Saindo...");
            } else {
                System.out.println("Opção invalida. Tente novamente.");
            }
        }

        scanner.close();
        
    }
}

2 respostas

Olá, João. Tudo bem com você?

Sua resolução para o desafio ficou excelente e cobriu todos os requisitos propostos na atividade. O uso das Text Blocks para formatar o menu deixou a exibição do texto muito mais legível e organizada, enquanto a estrutura do laço while tratou a repetição até que o usuário decida encerrar as operações.

A utilização do System.out.printf para formatar os valores monetários com duas casas decimais deu um toque muito profissional ao projeto. Dentro desse contexto de controle de fluxo com múltiplas opções fixas, uma alternativa interessante para simplificar as condicionais no lugar do encadeamento de if-else é utilizar a estrutura switch-case, que torna a leitura do código ainda mais direta quando lidamos com um menu numérico.

Como você acha que poderia aplicar o switch-case para organizar os blocos de escolha do seu código em um próximo projeto?

Parabéns pelo empenho na solução e por compartilhar o seu projeto com a comunidade, continue assim nos seus estudos. Caso precise de qualquer auxílio ou queira discutir novas ideias, lembre-se de que o fórum está sempre à sua disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
import java.util.Scanner;

public class CaixaEletronico {
    public static void main(String[] args) {
        int opcao = 0;
        double saldo = 5000;

        Scanner scanner = new Scanner(System.in);

        String dados = """
                ------------------------------
                Dados do cliente:
                
                Nome:          João Silva
                Agencia:       2748
                Conta:         248-9
                ------------------------------
                """;

        System.out.println(dados);

        while(opcao != 4) {
            System.out.println("""
                    Operações:
                    
                    1 - Ver saldo:
                    2 - Depositar:
                    3 - Sacar:
                    4 - Sair:
                    
                    Escolha uma opção:
                    """);

            opcao = scanner.nextInt();

            switch (opcao) {
                case 1:
                    System.out.printf("Saldo total : R$ %.2f%n", saldo);
                    break;
                case 2:
                    System.out.println("Valor: ");
                    double valorDeposito = scanner.nextDouble();

                    if (valorDeposito <= 0) {
                        System.out.println("O valor precisa ser maior que zero.");
                    } else {
                        saldo += valorDeposito;
                        System.out.printf("Saldo atualizado: R$ %.2f%n", saldo);
                    }
                    break;
                case 3:
                    System.out.println("Valor: ");
                    double valorSaque = scanner.nextDouble();

                    if (valorSaque <= 0) {
                        System.out.println("Valor precisa ser maior que zero.");
                    } else if (valorSaque > saldo) {
                        System.out.println("Saldo insuficiente.");
                    } else {
                        saldo -= valorSaque;
                        System.out.printf("Saldo atualizado: R$ %.2f%n", saldo);
                    }
                    break;
                case 4:
                    System.out.println("saindo... Obrigado por usar nosso sistema.");
                    break;
                default:
                    System.out.println("Opção inválida. Tente novamente.");
            }

        }

        scanner.close();

    }
}