1
resposta

[Dúvida] Problema no código

Boa noite! Poderia ver o que está errado no meu código?

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        double valorRecebido = 0;
        double valorTransferido = 0;
        int opcao = 0;
        double saldoInicial = 2500;
        System.out.println("****************************");
        System.out.println("Dados iniciais do cliente: ");
        System.out.println("Nome:       Cláudio Oliveira");
        System.out.println("Tipo de conta:      corrente");
        System.out.println("Saldo inicial: " + saldoInicial);
        System.out.println("*****************************");
        System.out.println("Operações: ");
        System.out.println("1. Consultar saldos");
        System.out.println("2. Receber valor");
        System.out.println("3. Transferir valor");
        System.out.println("4. Sair");
        opcao = leitura.nextInt();
        while (opcao != 4) {
            System.out.println("Operações: ");
            System.out.println("1. Consultar saldos");
            System.out.println("2. Receber valor");
            System.out.println("3. Transferir valor");
            System.out.println("4. Sair");
            opcao = leitura.nextInt();


            if (opcao == 1) {
                System.out.println("Saldo inicial = " + saldoInicial);

            } else if (opcao == 2) {
                System.out.println("Digite o valor a ser recebido: ");
                valorRecebido = leitura.nextDouble();
                saldoInicial = saldoInicial + valorRecebido;
                System.out.println("Saldo Atualizado: " + saldoInicial);

            } else if (opcao == 3) {
                System.out.println("Digite o valor a ser transferido: ");
                valorTransferido = leitura.nextDouble();
                if (valorTransferido > saldoInicial) {
                    System.out.println("Opção inválida");
                } else if (saldoInicial > valorTransferido || saldoInicial > valorTransferido) {
                    saldoInicial = saldoInicial - valorTransferido;
                    System.out.println("Saldo Atualizado: " + saldoInicial);

                } else if (opcao < 1 || opcao > 4) {
                    System.out.println("Opção Inválida");
                }


            }
            if (opcao == 4) {
                System.out.println("Obrigado");
            }
        }
    }
}
1 resposta

Oi Flavio! Boa tarde!

De início, percebo que você já tem uma boa estrutura para o seu projeto. No entanto, há alguns pontos que podemos ajustar para que ele funcione conforme o esperado. Aqui estão algumas sugestões:

  1. Repetição do Menu de Opções: Dentro do seu loop while, você está repetindo a impressão do menu de opções duas vezes. Você pode simplificar isso colocando a impressão do menu apenas uma vez dentro do loop.

  2. Condição de Transferência: Na parte onde você verifica se o valor a ser transferido é maior que o saldo, a mensagem "Opção inválida" não está correta para essa situação. De acordo com o contexto do desafio, a mensagem correta seria "Não há saldo suficiente para fazer essa transferência."

  3. Estrutura de Condições: No bloco else if, você tem uma condição redundante: else if (saldoInicial > valorTransferido || saldoInicial > valorTransferido). Isso pode ser simplificado para else if (saldoInicial >= valorTransferido).

  4. Opção Inválida: A condição para opções inválidas está dentro do else if do bloco de transferência. Ela deveria estar fora, para que qualquer opção inválida seja tratada corretamente.

Aqui está uma versão ajustada do seu código:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        double valorRecebido = 0;
        double valorTransferido = 0;
        int opcao = 0;
        double saldoInicial = 2500;
        System.out.println("****************************");
        System.out.println("Dados iniciais do cliente: ");
        System.out.println("Nome:       Cláudio Oliveira");
        System.out.println("Tipo de conta:      corrente");
        System.out.println("Saldo inicial: " + saldoInicial);
        System.out.println("*****************************");

        while (opcao != 4) {
            System.out.println("Operações: ");
            System.out.println("1. Consultar saldos");
            System.out.println("2. Receber valor");
            System.out.println("3. Transferir valor");
            System.out.println("4. Sair");
            System.out.print("Digite a opção desejada: ");
            opcao = leitura.nextInt();

            if (opcao == 1) {
                System.out.println("Saldo atual = " + saldoInicial);

            } else if (opcao == 2) {
                System.out.println("Digite o valor a ser recebido: ");
                valorRecebido = leitura.nextDouble();
                saldoInicial += valorRecebido;
                System.out.println("Saldo Atualizado: " + saldoInicial);

            } else if (opcao == 3) {
                System.out.println("Digite o valor a ser transferido: ");
                valorTransferido = leitura.nextDouble();
                if (valorTransferido > saldoInicial) {
                    System.out.println("Não há saldo suficiente para fazer essa transferência.");
                } else {
                    saldoInicial -= valorTransferido;
                    System.out.println("Saldo Atualizado: " + saldoInicial);
                }

            } else if (opcao < 1 || opcao > 4) {
                System.out.println("Opção Inválida");
            }
        }
        System.out.println("Obrigado");
    }
}

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.