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

Desafio Final

public class ProyectoXD { public static void main(String[] args) { var sc = new Scanner(System.in); String NombreCLiente = "Sebastian Causil"; String TipoCuenta = "ahorros"; Saldo saldo = new Saldo(999.999); adiccionarCliente(NombreCLiente, TipoCuenta, saldo.getSaldoDisponible());

    boolean salir = false;
    while (!salir) {
        mostrarMenu();
        int opcion = sc.nextInt();
        switch (opcion) {
            case 1:
                consultarSaldo(saldo.getSaldoDisponible());
                break;
            case 2:
                retirarSaldo(saldo, sc);
                break;
            case 3:
                depositarSaldo(saldo, sc);
                break;
            case 4:
                System.out.println("Gracias por usar el sistema. ¡Hasta pronto!");
                salir = true;
                break;
            default:
                System.out.println("Opción no válida. Intente de nuevo.");
                break;
        }
    }
}

public static void adiccionarCliente(String NombreCLiente, String TipoCuenta, Double SaldoDisponible) {
    System.out.printf("""
                Nombre del cliente  : %s
                Tipo de cuenta:  %s
                Saldo disponible:  %.2f
                """, NombreCLiente, TipoCuenta, SaldoDisponible);
}

public static void mostrarMenu() {
    System.out.println("""
             ========================================
             ========================================
             [[[ BIENVENIDOS AL MENU DE MARYBANCO ]]]
             ========================================
             ========================================
             *Escriba el numero de la opcion deseada *
            1 - Consultar saldo 
            2 - Retirar 
            3 - Depositar
            4 - Salir
            """);
}

public static void consultarSaldo(Double SaldoDisponible) {
    System.out.printf("""
            El saldo actualizado del cliente es : %.2f
            """, SaldoDisponible);
}

public static void retirarSaldo(Saldo saldo, Scanner scanner) {
    System.out.println("¿Qué valor deseas retirar?");
    double monto = scanner.nextDouble();

    if (monto > 0) {
        if (monto > saldo.getSaldoDisponible()) {
            System.out.println("Fondos insuficientes, por favor agrega un monto considerable.");
        } else {
            saldo.setSaldoDisponible(saldo.getSaldoDisponible() - monto);
            System.out.printf("Has retirado %.2f. El saldo restante es %.3f\n", monto, saldo.getSaldoDisponible());
        }
    } else {
        System.out.println("El monto de retiro debe ser mayor que 0.");
    }
}

public static void depositarSaldo(Saldo saldo, Scanner scanner) {
    System.out.println("¿Qué valor deseas depositar?");
    double monto = scanner.nextDouble();

    if (monto > 0) {
        saldo.setSaldoDisponible(saldo.getSaldoDisponible() + monto);
        System.out.printf("Has depositado %.2f. El saldo actual es %.2f\n", monto, saldo.getSaldoDisponible());
    } else {
        System.out.println("El monto de depósito debe ser mayor que 0.");
    }
}

}

class Saldo { private double saldoDisponible;

public Saldo(double saldoInicial) {
    this.saldoDisponible = saldoInicial;
}

public double getSaldoDisponible() {
    return saldoDisponible;
}

public void setSaldoDisponible(double saldoDisponible) {
    this.saldoDisponible = saldoDisponible;
}

}

2 respuestas

Hola Maria, espero que estés bien

He revisado tu código y parece que estás intentando crear un sistema bancario simple donde los usuarios pueden consultar su saldo, retirar y depositar dinero. Sin embargo, hay un pequeño problema con cómo estás manejando el saldo disponible. Actualmente, estás pasando el saldo como un Double, lo cual es inmutable dentro de las funciones retirarSaldo y depositarSaldo. Esto significa que cualquier cambio que hagas al saldo dentro de estas funciones no se reflejará fuera de ellas.

Para solucionar esto, podrías usar un objeto para encapsular el saldo, de manera que los cambios se reflejen correctamente. Aquí tienes un ejemplo de cómo podrías hacerlo:

public class ProyectoXD {
    public static void main(String[] args) {
        var sc = new Scanner(System.in);
        String NombreCLiente = "Sebastian Causil";
        String TipoCuenta = "ahorros";
        Saldo saldo = new Saldo(999.999);
        adiccionarCliente(NombreCLiente, TipoCuenta, saldo.getSaldoDisponible());

        boolean salir = false;
        while (!salir) {
            mostrarMenu();
            int opcion = sc.nextInt();
            switch (opcion) {
                case 1:
                    consultarSaldo(saldo.getSaldoDisponible());
                    break;
                case 2:
                    retirarSaldo(saldo, sc);
                    break;
                case 3:
                    depositarSaldo(saldo, sc);
                    break;
                case 4:
                    System.out.println("Gracias por usar el sistema. ¡Hasta pronto!");
                    salir = true;
                    break;
                default:
                    System.out.println("Opción no válida. Intente de nuevo.");
                    break;
            }
        }
    }

    public static void adiccionarCliente(String NombreCLiente, String TipoCuenta, Double SaldoDisponible) {
        System.out.printf("""
                    Nombre del cliente  : %s
                    Tipo de cuenta:  %s
                    Saldo disponible:  %.2f
                    """, NombreCLiente, TipoCuenta, SaldoDisponible);
    }

    public static void mostrarMenu() {
        System.out.println("""
                 ========================================
                 ========================================
                 [[[ BIENVENIDOS AL MENU DE MARYBANCO ]]]
                 ========================================
                 ========================================
                 *Escriba el numero de la opcion deseada *
                1 - Consultar saldo 
                2 - Retirar 
                3 - Depositar
                4 - Salir
                """);
    }

    public static void consultarSaldo(Double SaldoDisponible) {
        System.out.printf("""
                El saldo actualizado del cliente es : %.2f
                """, SaldoDisponible);
    }

    public static void retirarSaldo(Saldo saldo, Scanner scanner) {
        System.out.println("¿Qué valor deseas retirar?");
        double monto = scanner.nextDouble();

        if (monto > 0) {
            if (monto > saldo.getSaldoDisponible()) {
                System.out.println("Fondos insuficientes, por favor agrega un monto considerable.");
            } else {
                saldo.setSaldoDisponible(saldo.getSaldoDisponible() - monto);
                System.out.printf("Has retirado %.2f. El saldo restante es %.3f\n", monto, saldo.getSaldoDisponible());
            }
        } else {
            System.out.println("El monto de retiro debe ser mayor que 0.");
        }
    }

    public static void depositarSaldo(Saldo saldo, Scanner scanner) {
        System.out.println("¿Qué valor deseas depositar?");
        double monto = scanner.nextDouble();

        if (monto > 0) {
            saldo.setSaldoDisponible(saldo.getSaldoDisponible() + monto);
            System.out.printf("Has depositado %.2f. El saldo actual es %.2f\n", monto, saldo.getSaldoDisponible());
        } else {
            System.out.println("El monto de depósito debe ser mayor que 0.");
        }
    }
}

class Saldo {
    private double saldoDisponible;

    public Saldo(double saldoInicial) {
        this.saldoDisponible = saldoInicial;
    }

    public double getSaldoDisponible() {
        return saldoDisponible;
    }

    public void setSaldoDisponible(double saldoDisponible) {
        this.saldoDisponible = saldoDisponible;
    }
}

Espero que esta solución te sea útil. ¡Espero haber ayudado y buenos estudios!

Muchas gracias profe brenda sus retroalimentaciones me sirven mucho , realmente si tengo ese problema gracias por las correcciones , ya actualice mi codigo