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

Desafio final - Switch Case

Galera, para quem quer uma ideia diferente da aula segue meu código abaixo, aceito sugestões.

import java.util.Locale;
import java.util.Scanner;

public class ContaBancaria {

    public static void main(String[] args) {
        Locale.setDefault(Locale.US);
        Scanner sc = new Scanner(System.in);

        String nomeCliente, tipoConta;
        double saldo, credito, debito;
        int operacoes = 0;

        System.out.print("Informe seu nome: ");
        nomeCliente = sc.nextLine();
        System.out.print("Informe o tipo da sua conta bancária: ");
        tipoConta = sc.nextLine();
        System.out.print("Informe seu saldo atual: ");
        saldo = sc.nextDouble();

        System.out.println(String.format("""
                **************************************************
                Dados iniciais do cliente:

                Nome: %s
                Tipo de conta: %s
                Saldo inicial: R$%.2f
                **************************************************

                """, nomeCliente, tipoConta, saldo));

        System.out.println();

        String menu = """
                Operações:
                1 - Consultar saldo
                2 - Receber valor
                3 - Transferir valor
                4 - Sair

                Digite a opção desejada:  """;

        while(operacoes != 4) {
            System.out.println(menu);
            operacoes = sc.nextInt();
            switch (operacoes) {
            case 1: {
                System.out.println(String.format("O saldo atual é de R$%.2f", saldo));
                System.out.println();
                break;
            }
            case 2: {
                System.out.print("Informe o valor a receber: ");
                credito = sc.nextDouble();
                saldo += credito;
                System.out.print(String.format("Saldo atualizado: R$%.2f", saldo));
                System.out.println();
                break;
            }
            case 3: {
                System.out.print("Informe o valor que deseja transferir: ");
                debito = sc.nextDouble();
                if (debito > saldo) {
                    System.out.println("Não há saldo suficiente para fazer esta tranferência.");
                }
                else{
                    saldo -= debito;
                    System.out.print(String.format("Saldo atualizado: R$%.2f", saldo));
                }
                System.out.println();
                break;
            }
            default:
                System.out.print("Operação inválida");
                System.out.println();
                break;
            }
        }
        sc.close();
    }

}
2 respostas
solução!

Olá João, tudo bem?

Gostei bastante do seu código! Achei bem organizado e fácil de entender.

Acredito que melhoria se você criasse métodos para falar o que cada operação faz, dessa forma quem for ler o código já vai matar o que cada opção faz antes mesmo de precisar ver o código

Outro detalhe, que pode ajudar, é você usar constantes para tentar guiar teu código, por exemplo o switch é de inteiros, mas a pessoa, ainda que você crie o método de cada operação, vai precisar entender cada ação para saber do qual é ela, nesse caso, se tu criar constantes ficaria mais fácil de entender o código, segue exemplo:


public class ContaBancaria {

private static int CONSULTA_SALDO = 1;
private static int DEPOSITO = 2;
private static int TRANSFERENCIA = 3;
private static int SAIR = 4;


    public static void main(String[] args) {
        Locale.setDefault(Locale.US);
        Scanner sc = new Scanner(System.in);

        String nomeCliente, tipoConta;
        double saldo, credito, debito;
        int operacoes = 0;

        coletaDadosIniciais();

        while(operacoes != SAIR) {
            exibeMenu();
            switch (operacoes) {
            case CONSULTA_SALDO: {
                exibeSaldo();
                break;
            }
            case DEPOSITO: {
                 realizaDeposito();
                break;
            }
            case TRANSFERENCIA: {
                realizaTransferencia();
                break;
            }
            default:
                mensagemOperacaoInvalida();
                break;
            }
        }
        sc.close();
    }

}

Fora isso, parabéns pelo código! Espero ter ajudado e bons estudos!

Olá Matheus, tudo jóia e você?

Acabei de entrar no curso que explica essa parte de métodos e tudo mais e agora que vi sua sugestão ta bem mais claro pra mim o que você quis dizer, muito obrigado pela dica cara, ajudou muito na sequência dos estudos!!!