Para el desafio, yo tome una vía diferente para resolverlo, ya que en vez de utilizar un bucle while, lo hice con un for, y además, englobe cada operación en métodos estáticos, que los llamé en el switch-case, el cual a su vez, utilice su nueva sintaxis desde java 17. A continuación dejo mi código:
import java.util.Scanner;
public class DesafioBancario {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int opcion;
int saldo = 350000;
String nombre = "Hector";
String tipoCuenta = "Corriente";
System.out.println(String.format("Bienvenido Sr. %s, %nsu tipo de cuenta es: %s %ny su saldo es: $%d", nombre, tipoCuenta, saldo));
String menu = """
********Escriba la opcion a realizar********
1. Consultar saldo
2. Retirar
3. Depositar
9. Salir
""";
do {
System.out.println(menu);
opcion = scanner.nextInt();
if (opcion != 9) {
switch (opcion) {
case 1 -> consultarSaldo(saldo);
case 2 -> saldo = retirar(saldo, scanner);
case 3 -> saldo = depositar(saldo, scanner);
default -> System.out.println("Opción no válida");
}
}
} while (opcion != 9);
System.out.println("Finalizando programa, muchas gracias por usar nuestros servicios");
scanner.close();
}
static void consultarSaldo(int saldo) {
System.out.println("Su saldo disponible es de: $" + saldo);
}
static int retirar(int saldo, Scanner scanner) {
System.out.println("Ingrese la cantidad a retirar");
int cantidadRetiro = scanner.nextInt();
if (cantidadRetiro > saldo) {
System.out.println("No tiene suficientes fondos");
} else {
saldo -= cantidadRetiro;
System.out.println("Retiro exitoso, el saldo restante es de: $" + saldo);
}
return saldo;
}
static int depositar(int saldo, Scanner scanner) {
System.out.println("Ingrese la cantidad a depositar");
int cantidadDeposito = scanner.nextInt();
saldo += cantidadDeposito;
System.out.println("Deposito exitoso, el saldo actual es de: $" + saldo);
return saldo;
}
}