1
resposta

[Projeto] Minha Resolução

Aberto a sugestões de melhoria!

import java.util.Scanner;

public class ChallengeBank {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String name = "José Louzeiro";
        String type = "Investimento";
        double balance = 478547.47;
        double value = 0;

        String menu = """
                Operações:
                1- Consultar saldo
                2- Adicionar valor
                3- Transferir valor
                4- Sair
                                
                Digite a opção desejada:
                """;

        System.out.println(menu);
        int option = sc.nextInt();

        while (option != 4) {
            switch (option) {
                case 1:
                    printsAccount(name, type, balance);
                    System.out.println(menu);
                    option = sc.nextInt();
                    break;
                case 2:
                    System.out.println("Informe o valor para depósito: ");
                    value = sc.nextDouble();
                    balance = transfer(balance, value);
                    System.out.println(menu);
                    option = sc.nextInt();
                    break;
                case 3:
                    System.out.println("Informe o valor para transferência: ");
                    value = sc.nextDouble();
                    balance = deposit(balance, value);
                    System.out.println(menu);
                    option = sc.nextInt();
                    break;
                default:
                    System.out.println("Opção inválida!");
                    System.out.println(menu);
                    option = sc.nextInt();
            }
        }
    }

    public static void printsAccount(String name, String type, double balance) {
        String resume = """
                                
                _______________ Saldos _______________
                                
                Nome:                    %s
                Tipo conta:              %s
                Saldo inicial:           %.2f
                _______________________________________
                """;

        System.out.printf((resume) + "%n", name, type, balance);
    }

    public static double deposit(double balance, double value) {
        double operation = balance + value;
        System.out.println("Saldo atualizado: " + operation+"\n");
        return operation;
    }

    public static double transfer(double balance, double value) {
        if (balance - value >= 0) {
            double operation = balance + value;
            System.out.println("Saldo atualizado: " + operation+"\n");
            return operation;
        } else {
            System.out.println("Saldo insuficiente!"+"\n");
            return balance;
        }
    }
}
1 resposta

Olá Felipe, tudo bem com você?

Meus parabéns pela resolução do desafio proposto, continue com essa dedicação e empenho.

Gostaria de aproveitar a oportunidade e deixar algumas recomendações de mudanças em seu código.

Atualmente, quando o usuário escolhe a opção 2 (para realizar um depósito), o código deveria chamar o método deposit, mas está chamando o método transfer. O mesmo acontece quando é escolhida a opção 3 (para realizar uma transferência) é chamado o método deposit. Recomendo trocar as chamadas dos métodos dentro do switch/case.

Um segundo ponto que recomendo modificar, será a manipulação do saldo da conta dentro do método transfer. Como estamos realizando uma operação de transferência de saldo, o valor informado pelo usuário deve ser subtraído do seu saldo atual, no código atualmente está realizando a soma. Basta trocar o sinal de mais (+) por menos (-), ficando da seguinte forma: double operation = balance - value;

Código com as sugestões de mudanças aplicadas

import java.util.Scanner;

public class ChallengeBank {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String name = "José Louzeiro";
        String type = "Investimento";
        double balance = 478547.47;
        double value = 0;

        String menu = """
                Operações:
                1- Consultar saldo
                2- Adicionar valor
                3- Transferir valor
                4- Sair
                                
                Digite a opção desejada:
                """;

        System.out.println(menu);
        int option = sc.nextInt();

        while (option != 4) {
            switch (option) {
                case 1:
                    printsAccount(name, type, balance);
                    System.out.println(menu);
                    option = sc.nextInt();
                    break;
                case 2:
                    System.out.println("Informe o valor para depósito: ");
                    value = sc.nextDouble();
                    balance = deposit(balance, value);
                    System.out.println(menu);
                    option = sc.nextInt();
                    break;
                case 3:
                    System.out.println("Informe o valor para transferência: ");
                    value = sc.nextDouble();
                    balance = transfer(balance, value);
                    System.out.println(menu);
                    option = sc.nextInt();
                    break;
                default:
                    System.out.println("Opção inválida!");
                    System.out.println(menu);
                    option = sc.nextInt();
            }
        }
    }

    public static void printsAccount(String name, String type, double balance) {
        String resume = """
                                
                _______________ Saldos _______________
                                
                Nome:                    %s
                Tipo conta:              %s
                Saldo inicial:           %.2f
                _______________________________________
                """;

        System.out.printf((resume) + "%n", name, type, balance);
    }

    public static double deposit(double balance, double value) {
        double operation = balance + value;
        System.out.println("Saldo atualizado: " + operation+"\n");
        return operation;
    }

    public static double transfer(double balance, double value) {
        if (balance - value >= 0) {
            double operation = balance - value;
            System.out.println("Saldo atualizado: " + operation+"\n");
            return operation;
        } else {
            System.out.println("Saldo insuficiente!"+"\n");
            return balance;
        }
    }
}

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

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