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

[Dúvida] Se puderem dar dicas de como melhorar o laço de repetição por favor

import java.util.Scanner;

public class Desafio { public static void main(String[] args) { Scanner leitura = new Scanner(System.in);

    double valorRecebido = 0;
    double valorTransferencia = 0;
    double valorAtualizado;
    double saldoInicial = 2500.00;


    System.out.println("Digite o seu nome: ");
    String nome = leitura.nextLine();
    System.out.println("Olá " + nome + ", seja bem-vinda! \n");

    System.out.println("""
                Deseja acessar sua conta? \s
                1 - Sim \s
                2 - Não \n""");
    int consulta = leitura.nextInt();


    while (consulta == 1){

        valorAtualizado = ((saldoInicial + valorRecebido) - valorTransferencia);
        System.out.println("""
                Deseja prosseguir? \s
                 1 - Sim \s
                 2 - Não \n""");
        consulta = leitura.nextInt();
        if (consulta == 2){
            System.out.println("Sistema finalizado! Obrigado!\n");
            break;
        }
        if (consulta > 2){
            System.out.println("Opção inválida! \n");
        }

        System.out.println("""
                Informe o seu tipo de conta: \s
                1 - Poupança \s
                2 - Conta Corrente \s
                3 - Pessoa Jurídica \n""");

        int tipoConta = leitura.nextInt();

        if (tipoConta == 1) {
            System.out.println("Poupança\n");
        }
        if (tipoConta == 2) {
            System.out.println("Conta Corrente\n");
        }
        if (tipoConta == 3){
            System.out.println("Pessoa Jurídica \n");
        }
        if (tipoConta > 3 || tipoConta < 1){
            System.out.println("Opção inválida \n");
        }
        System.out.println("""
                Digite a opção desejada: \s
                1 - Consultar saldos \s
                2 - Receber valor \s
                3 - Transferir valor \s
                4 - sair \n""");

        int tipoOperacao = leitura.nextInt();

        if (tipoOperacao == 1) {
            System.out.println("O saldo disponível é: " + valorAtualizado + "\n");
        }
        if (tipoOperacao == 2) {
            System.out.println("Informe o valor a ser recebido: \n");
            valorRecebido = leitura.nextDouble();

            if (valorRecebido != 0) {
               System.out.println("O saldo disponível é: " + (valorAtualizado + valorRecebido) + "\n");
            }
        }
        if (tipoOperacao == 3) {

            System.out.println("Informe o valor que deseja transferir: \n");
            valorTransferencia = leitura.nextDouble();

            if (valorTransferencia > valorAtualizado) {
                System.out.println("Não há saldo o suficiente para realizar essa transferência \n");
            } else {
                System.out.println("Transferência realizada com sucesso!\n");
                System.out.println("O seu saldo disponível é: " + (valorAtualizado - valorTransferencia) + "\n");
            }
        }
        if (tipoOperacao == 4) {
            System.out.println("Sair");
        }
        if (tipoOperacao > 4) {
            System.out.println("Opção inválida");
        }
    }
}

}

2 respostas
solução!

Olá Janara! Tudo bem?

Vou te dar algumas sugestões!

  1. Utilize uma estrutura de repetição do-while: Ao invés de utilizar o laço while com uma condição no início, você pode utilizar o do-while com a condição no final. Isso garante que o código dentro do laço seja executado pelo menos uma vez, antes de verificar a condição de saída. Ficaria assim:
do {
    // código dentro do laço
} while (consulta == 1);
  1. Utilize um switch-case para as opções de tipo de conta e tipo de operação: Ao invés de utilizar vários if-else if para verificar as opções escolhidas pelo usuário, você pode utilizar um switch-case. Isso torna o código mais legível e fácil de entender. Ficaria assim:
switch (tipoConta) {
    case 1:
        System.out.println("Poupança\n");
        break;
    case 2:
        System.out.println("Conta Corrente\n");
        break;
    case 3:
        System.out.println("Pessoa Jurídica\n");
        break;
    default:
        System.out.println("Opção inválida\n");
        break;
}
  1. Utilize um switch-case também para as opções de tipo de operação. Ficaria assim:
switch (tipoOperacao) {
    case 1:
        System.out.println("O saldo disponível é: " + valorAtualizado + "\n");
        break;
    case 2:
        System.out.println("Informe o valor a ser recebido: \n");
        valorRecebido = leitura.nextDouble();

        if (valorRecebido != 0) {
            System.out.println("O saldo disponível é: " + (valorAtualizado + valorRecebido) + "\n");
        }
        break;
    case 3:
        System.out.println("Informe o valor que deseja transferir: \n");
        valorTransferencia = leitura.nextDouble();

        if (valorTransferencia > valorAtualizado) {
            System.out.println("Não há saldo o suficiente para realizar essa transferência \n");
        } else {
            System.out.println("Transferência realizada com sucesso!\n");
            System.out.println("O seu saldo disponível é: " + (valorAtualizado - valorTransferencia) + "\n");
        }
        break;
    case 4:
        System.out.println("Sair");
        break;
    default:
        System.out.println("Opção inválida");
        break;
}

Essas são apenas algumas sugestões para melhorar o seu código. Lembre-se de sempre testar e validar as alterações que você fizer. Espero ter ajudado e bons estudos!

Muito obrigada!