Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Minha solução

Segue a minha resolução do projeto que tentei por conta própria:


public class VirtualBankAccount {
    static void main() {
        Scanner scanner = new Scanner(System.in);
        int option = 0;

        System.out.println("Digite o nome do cliente: ");
        String name = scanner.nextLine();

        System.out.println("Digite o tipo de conta (Corrente / Poupança): ");
        String account = scanner.nextLine();

        System.out.println("Digite o saldo: ");
        double balance = scanner.nextDouble();

        String initialData = """
            *********************************
            Dados iniciais do cliente:
            
            Nome: %s
            Tipo conta: %s
            Saldo inicial: R$ %.2f
            *********************************
            \n
            """;

        System.out.printf(initialData.formatted(name, account, balance));

        while (option != 4) {
            System.out.println(
                """
                Operações
                
                1- Consultar saldos
                2- Receber valor
                3- Transferir valor
                4- Sair
                """
            );
            option = scanner.nextInt();

            switch (option) {
                case 1:
                    System.out.printf(initialData.formatted(name, account, balance));
                    break;
                case 2:
                    balance = receiveValue(balance);
                    break;
                case 3:
                    balance = transferValue(balance);
                    break;
                case 4:
                    break;
                default:
                    String invalidOption = "Opcao inválida";
                    System.out.println(invalidOption);
                    break;
            }
        }
    }

    public static double receiveValue(double balance) {
        double valueToReceive = 0;
        Scanner scanner = new Scanner(System.in);

        System.out.println("\nInforme o valor a receber: ");
        valueToReceive = scanner.nextDouble();

        balance += valueToReceive;
        System.out.println("\nSaldo atualizado: R$ " + (balance));
        return balance;

    }

    public static double transferValue(double balance) {
       double valueToTransfer = 0;
       Scanner scanner = new Scanner(System.in);

        System.out.println("\nInforme o valor que deseja transferir: ");
        valueToTransfer = scanner.nextDouble();

        if  (!((balance - valueToTransfer) < 0)) {
            balance -= valueToTransfer;
            System.out.println("\nSaldo atualizado: R$" + balance);
            return balance;

        } else {
            System.out.println("Não há saldo suficiente para fazer essa transferência.");
        }
        return balance;
    }
}

Tive que pesquisar algumas coisas para entender como são criados métodos e como chamá-los, pois eu comecei a aprender a programar com Python, então tenho dificuldade. Acredito que, para o estágio atual da trilha backend do java, a minha resolução esteja boa.
```

1 resposta

Oi, Enzo. Tudo bem com você?

Sua resolução para a atividade ficou excelente. Você aplicou de forma muito criativa a dinâmica do menu interativo de conta bancária virtual, e a transição do Python para o Java pode trazer algumas diferenças na sintaxe, mas você conseguiu estruturar o projeto muito bem. O uso de métodos estáticos auxiliares para separar as operações de transferência e recebimento deixou a lógica organizada.

Apenas um pequeno detalhe técnico sobre a assinatura do método principal: em versões padrão do Java, a declaração do método precisa conter a visibilidade public e os argumentos String[] args, ficando public static void main(String[] args). Além disso, uma boa oportunidade de melhoria no método de transferência é simplificar a condição do if. Em vez de usar a negação !((balance - valueToTransfer) < 0), você pode comparar diretamente se o valor a ser transferido é maior que o saldo disponível:

if (valueToTransfer > balance) {
    System.out.println("Não há saldo suficiente para fazer essa transferência.");
} else {
    balance -= valueToTransfer;
    System.out.println("\nSaldo atualizado: R$" + balance);
}

Como você pretende praticar a criação de novas classes e orientação a objetos nos seus próximos passos com Java?

Parabéns pelo excelente resultado e pela dedicação em buscar conhecimento além do conteúdo base. O fórum está sempre à disposição para o que você precisar.

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