Eu tenho uma base com Angular que acredito ter me ajudado muito ao aprender Java. Como o Angular utiliza TypeScript com tipagem forte, injeção de dependências, modularidade, componentização e o uso intenso de classes, ele possui diversas semelhanças com a arquitetura e práticas do Java.
Inclusive, recomendo fortemente que quem estiver estudando Java dê uma olhada no framework Angular. Na minha opinião, a combinação Angular + Java é excelente tanto para desenvolvimento full stack quanto para fortalecer a lógica e boas práticas de código.
Para o desafio proposto, optei por utilizar switch no lugar de else if para deixar o código mais organizado e legível. Além disso, separei cada operação em métodos próprios fora do main, aplicando os princípios de responsabilidade única e modularidade.
import java.util.Scanner;
public class ContaBancaria {
public static void main(String[] args) {
Scanner leitura = new Scanner(System.in);
String nome = "Henrique";
String tipoConta = "Poupança";
double saldoInicial = 3000.00;
int opcao = 0;
dadosCliente(nome,tipoConta,saldoInicial);
operacoes();
while(opcao != 4){
System.out.println("Digite a opção desejada:");
opcao = leitura.nextInt();
switch (opcao){
case 1:
verSaldo(saldoInicial);
operacoes();
break;
case 2:
saldoInicial = receberValor(leitura,saldoInicial);
operacoes();
break;
case 3:
saldoInicial = transferirValor(leitura,saldoInicial);
operacoes();
break;
case 4:
System.out.println("Saindo da aplicação...");
break;
default:
System.out.println("Opção inválida.");
operacoes();
}
}
}
public static void dadosCliente(String nome,String tipoConta,double saldoInicial){
System.out.printf("""
*************************************
Dados Iniciais do cliente:
Nome: %s
Tipo conta: %s
Saldo inicial: R$ %.2f
*************************************
""",nome,tipoConta,saldoInicial);
}
public static void operacoes(){
String consultarSaldo = "Consultar saldo";
String deposito = "Receber valor";
String transferencia = "Transferir valor";
String sair = "Sair";
System.out.printf("""
Operações
1- %s
2- %s
3- %s
4- %s
""",consultarSaldo,deposito,transferencia,sair);
}
public static void verSaldo(double saldoInicial){
System.out.printf("Saldo atual : R$ %.2f",saldoInicial);
}
public static double receberValor(Scanner leitura,double saldoInicial){
System.out.println("Informe o valor do deposito:");
double deposito = leitura.nextDouble();
saldoInicial += deposito;
System.out.printf("Saldo atualizado: R$ %.2f",saldoInicial);
return saldoInicial;
}
public static double transferirValor(Scanner leitura,double saldoInicial){
System.out.println("Digite o valor que deseja transferir:");
double transferir = leitura.nextDouble();
if(transferir > saldoInicial){
System.out.println("Saldo insuficiente");
}else {
saldoInicial -= transferir;
System.out.printf("Saldo atualizado R$ %.2f",saldoInicial);
}
return saldoInicial;
}
}