Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Desafio: Cuenta bancaria

Les comparto una parte de mi código, la otra parte estará más abajo porque es muy largo jeje, tengan toda la libertad de darme feedback, lo aceptaré con mucha humildad.

import java.text.NumberFormat;
import java.util.Locale;
import java.util.Scanner;


public class CuentaBancaria {

    public static void separador(int tipo) {

        switch (tipo) {
            case 1 -> System.out.println("===========================================================================");
            case 2 -> System.out.println("\n===========================================================================");
            case 3 -> System.out.println("===========================================================================\n");
            case 4 -> System.out.println("\n===========================================================================\n");
        }

    }

    public static final int CONSULTAR = 1;
    public static final int RETIRAR = 2;
    public static final int DEPOSITAR = 3;
    public static final int CONFIRMAR_SALIR = 4;
    public static final int SALIR = 9;

    public static void main(String[] args) {

        Scanner entradaDatos = new Scanner(System.in);
        int saldo = 30000;
        int eleccionUsuario = 0;
        int montoUsuario;
        int siNo;
        Locale colombia = Locale.of("es", "CO");
        NumberFormat formatoCOP = NumberFormat.getCurrencyInstance(colombia);
        String cliente = "Cristiano Ronaldo";
        String tipoCuenta = "Ahorro";
        String informacionCliente = """
                Cliente: %s
                Cuenta: %s
                """.formatted(cliente, tipoCuenta);
        String informacionSaldo = "Saldo:" + formatoCOP.format(saldo);



        System.out.println("\n================= Información de la cuenta =================");
        System.out.print("\n" + informacionCliente);
        System.out.print(informacionSaldo + "\n");
        separador(4);

        while (eleccionUsuario != CONFIRMAR_SALIR) {

            System.out.println("""
                    ================= MENÚ PRINCIPAL =================
                    
                    1 - Consultar Saldo
                    2 - Retirar
                    3 - Depositar
                    9 - Salir
                    """);

            separador(3);
            try {
                eleccionUsuario = entradaDatos.nextInt();
            } catch (java.util.InputMismatchException e) {
                separador(4);
                System.out.println("Entrada Invalida. Por favor, escriba solo números");
                separador(2);
                entradaDatos.nextLine();
                continue;

            }


            if (eleccionUsuario != CONSULTAR && eleccionUsuario != RETIRAR && eleccionUsuario != DEPOSITAR && eleccionUsuario != SALIR) {
                separador(4);
                System.out.println("Opción no disponible, seleccione un número correcto");
                separador(4);
                continue;
            }

                if (eleccionUsuario == 9) {
                    separador(4);
                    System.out.println("¿Esta seguro que desea salir? 1 = SI, 2 = NO");
                    separador(4);

                    try {
                        siNo = entradaDatos.nextInt();
                    } catch (java.util.InputMismatchException e) {
                        entradaDatos.nextLine();
                        separador(4);
                        System.out.println("Entrada inválida, regresando al menú...");
                        separador(4);
                        continue;
                    }

                    while (siNo != 1 && siNo != 2) {
                        separador(4);
                        System.out.println("Opción no disponible, vuelva a intentar");
                        separador(4);
                        System.out.println("¿Esta seguro que desea salir? 1 = SI, 2 = NO");
                        separador(4);
                        siNo = entradaDatos.nextInt();
                    }
                    separador(4);
                    if (siNo == 1) {
                        eleccionUsuario = CONFIRMAR_SALIR;
                    } else {
                        continue;
                    }

                }

               
2 respuestas

aquí esta la otra parte.

 switch (eleccionUsuario) {

                    case 1:

                        separador(2);
                        System.out.println("\nSu saldo actual es: " + formatoCOP.format(saldo));
                        separador(4);
                        break;

                    case 2:
                        separador(2);
                        System.out.println("\n¿Cuanto desea retirar?");
                        separador(4);

                        try {
                            montoUsuario = entradaDatos.nextInt();
                        } catch (java.util.InputMismatchException e) {
                            separador(4);
                            System.out.println("Entrada invalida, escriba solo números");
                            separador(4);
                            entradaDatos.nextLine();
                            continue;
                        }

                        if (montoUsuario <= 0) {
                            System.out.println("Escriba una cantidad correcta");
                            separador(4);
                            break;
                        }

                        while (montoUsuario > saldo) {
                            System.out.println("Fondos insuficiente, inténtelo núevamente");
                            separador(4);
                            montoUsuario = entradaDatos.nextInt();
                            separador(4);

                        }
                        saldo -= montoUsuario;
                        System.out.println("Procesando transacción...");
                        separador(2);
                        System.out.println("\nTransacción exitosa. Retiraste:  " + formatoCOP.format(montoUsuario));
                        separador(2);
                        System.out.println("\nSaldo actualizado: " + formatoCOP.format(saldo));
                        separador(4);
                        break;

                    case 3:
                        separador(2);
                        System.out.println("\n¿Cuanto desea depositar?");
                        separador(4);

                        try {
                            montoUsuario = entradaDatos.nextInt();
                        } catch (java.util.InputMismatchException e) {
                            separador(4);
                            System.out.println("Entrada invalida, escriba solo números");
                            separador(4);
                            entradaDatos.nextLine();
                            continue;
                        }

                        if (montoUsuario <= 0) {
                            System.out.println("Escriba una cantidad correcta");
                            separador(4);
                            continue;
                        }

                        saldo += montoUsuario;
                        System.out.println("Procesando transacción...");
                        separador(2);
                        System.out.println("\nTransacción exitosa. Depositaste:  " + formatoCOP.format(montoUsuario));
                        separador(2);
                        System.out.println("\nSaldo actualizado: " + formatoCOP.format(saldo));
                        separador(4);
                        break;

                    case 4:
                        System.out.println("Finalizando el programa...");
                        separador(2);
                        System.out.println("\nMuchas gracias por utilizar nuestros servicios");
                        separador(2);
                        break;

                }
        }
        entradaDatos.close();
    }
}

¡Hola Jhonatan, espero que estés bien!

Sugerencia: compartir tu proyecto en el canal #comparta-tu-codigo en el servidor ONE en Discord ;)

Gracias por compartir tu código con nosotros. Parece que estás en el proceso de crear una aplicación de cuenta bancaria en Java. Aquí tienes algunos comentarios y sugerencias que podrían ayudarte a mejorar tu código:

  1. Manejo de Excepciones: Veo que ya estás manejando excepciones para entradas no válidas, lo cual es excelente. Asegúrate de siempre limpiar el buffer del Scanner usando entradaDatos.nextLine() después de capturar una excepción para evitar un ciclo infinito de errores.

  2. Modularidad: Considera dividir tu código en métodos más pequeños y específicos. Por ejemplo, podrías tener métodos separados para consultarSaldo, retirar, depositar, y confirmarSalida. Esto hará que tu código sea más legible y fácil de mantener.

  3. Validación de Entradas: Aunque ya estás validando las entradas del usuario, podrías mejorar la experiencia del usuario proporcionando mensajes más detallados sobre lo que salió mal y cómo corregirlo.

  4. Formato de Saldo: El uso de NumberFormat para mostrar el saldo en formato de moneda es una buena práctica. Asegúrate de usarlo siempre que muestres el saldo para mantener la consistencia.

  5. Comentarios y Documentación: A medida que tu código crece, es útil agregar comentarios para explicar la lógica detrás de bloques de código complicados. Esto también es útil para otros desarrolladores (o para ti mismo en el futuro).

  6. Buena Práctica: Es una buena práctica cerrar el Scanner al final del uso para liberar recursos. Puedes hacerlo usando entradaDatos.close().

Aquí tienes un ejemplo de cómo podrías estructurar un método para consultar el saldo:

public static void consultarSaldo(int saldo, NumberFormat formatoCOP) {
    separador(4);
    System.out.println("Su saldo actual es: " + formatoCOP.format(saldo));
    separador(4);
}

Luego, podrías llamarlo dentro de tu while principal cuando el usuario elija consultar el saldo.

Espero que estos consejos te sean útiles. ¡Sigue adelante con tu proyecto, estás haciendo un gran trabajo! Espero ter ayudado y bons estudos!