Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio Final

Fiz tudo para deixar o código o mais perfeito possível, tive que tirar os comentarios e encurtar mensagens por causa do limite da alura, fiz com string menu = """mas nao iria caber entao coloquei tudo em um SOUT só

import java.util.Scanner;

public class Desafio {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Digite seu nome completo: ");
        String nome = sc.nextLine();
        String tipoConta = "Corrente";
        double saldo = 2499.99;

        System.out.println("**********************************************");
        System.out.println("Dados Iniciais do cliente: ");
        System.out.println("\n Nome: " + nome);
        System.out.println("\n Tipo de conta: " + tipoConta);
        System.out.println("\n Saldo inicial: " + saldo);
        System.out.println("**********************************************");

        boolean operacao = true;
        while (operacao) {
            System.out.println("\n1: Consultar saldo\n2: Receber valor\n3: Transferir valor\n4: Sair");
            System.out.println("Digite a opção desejada: ");
            int opcao = sc.nextInt();
            sc.nextLine();

            switch (opcao) {
                case 1:
                    System.out.println("Saldo atual: " + String.format("%.2f", saldo));
                    String escolha = "";
                    while (!escolha.equalsIgnoreCase("sim") && !escolha.equalsIgnoreCase("nao")) {
                        System.out.println("Deseja fazer mais operações? (sim/nao): ");
                        escolha = sc.nextLine();
                        if (!escolha.equalsIgnoreCase("sim") && !escolha.equalsIgnoreCase("nao")) {
                            System.out.println("Resposta inválida!");
                        }
                    }
                    if (escolha.equalsIgnoreCase("nao")) {
                        operacao = false;
                    }
                    break;

                case 2:
                    double valorReceber = 0;
                    while (valorReceber <= 0) {
                        System.out.println("Valor a receber: ");
                        valorReceber = sc.nextDouble();
                        if (valorReceber <= 0) {
                            System.out.println("Valor inválido!");
                        }
                    }
                    saldo += valorReceber;
                    System.out.println("Saldo atualizado: " + String.format("%.2f", saldo));
                    sc.nextLine();
                    String desejo = "";
                    while (!desejo.equalsIgnoreCase("sim") && !desejo.equalsIgnoreCase("nao")) {
                        System.out.println("Deseja fazer mais operações? (sim/nao): ");
                        desejo = sc.nextLine();
                        if (!desejo.equalsIgnoreCase("sim") && !desejo.equalsIgnoreCase("nao")) {
                            System.out.println("Resposta inválida!");
                        }
                    }
                    if (desejo.equalsIgnoreCase("nao")) {
                        operacao = false;
                    }
                    break;

                case 3:
                    double valorTransferir = 0;
                    while (valorTransferir <= 0 || valorTransferir > saldo) {
                        System.out.println("Valor a transferir: ");
                        valorTransferir = sc.nextDouble();
                        if (valorTransferir > saldo) {
                            System.out.println("Saldo insuficiente!");
                        } else if (valorTransferir <= 0) {
                            System.out.println("Valor inválido!");
                        }
                    }
                    saldo -= valorTransferir;
                    System.out.println("Saldo atualizado: " + String.format("%.2f", saldo));
                    sc.nextLine();
                    String resposta = "";
                    while (!resposta.equalsIgnoreCase("sim") && !resposta.equalsIgnoreCase("nao")) {
                        System.out.println("Deseja fazer mais operações? (sim/nao): ");
                        resposta = sc.nextLine();
                        if (!resposta.equalsIgnoreCase("sim") && !resposta.equalsIgnoreCase("nao")) {
                            System.out.println("Resposta inválida!");
                        }
                    }
                    if (resposta.equalsIgnoreCase("nao")) {
                        operacao = false;
                    }
                    break;

                case 4:
                    System.out.println("Encerrando!");
                    operacao = false;
                    break;

                default:
                    System.out.println("Opção inválida!");
            }
        }
        sc.close();
    }
}
1 resposta
solução!

Oi, Vinicius! Como vai?

Gostei do cuidado que você teve em validar as entradas (valor > 0, saldo suficiente) e em manter o while controlando o fluxo do menu. Esse tipo de atenção deixa o programa mais seguro e mais agradável de usar, mesmo com a limitação de tamanho que você comentou.

Uma dica interessante para o futuro é evitar repetição criando um método para perguntar se a pessoa quer continuar, reutilizando a mesma lógica em todos os case. Veja este exemplo:


public static boolean querContinuar(Scanner sc) {
    String resp = "";
    while (!resp.equalsIgnoreCase("sim") && !resp.equalsIgnoreCase("nao")) {
        System.out.println("Deseja fazer mais operacoes? (sim/nao): ");
        resp = sc.nextLine();
        if (!resp.equalsIgnoreCase("sim") && !resp.equalsIgnoreCase("nao")) {
            System.out.println("Resposta invalida!");
        }
    }
    return resp.equalsIgnoreCase("sim");
}

Esse método lê a resposta, valida sim/nao e devolve true para continuar ou false para encerrar, deixando cada case bem mais curto.

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