Scan to open on your phone
Point a camera at the QR code - it opens this exact paste, no app needed.
https://codepastes.com/zzgsxty262mdz8dvCajero automático Hector poleoJava
//Se importa la clase Scanner para poder leer datos del usuario
import java.util.Scanner;
//Se importa la clase LocalDate para manejar la fecha actual en los comprobantes
import java.time.LocalDate;
public class Cajero {
//ATRIBUTOS DE CLASE (Variables estáticas accesibles en todo el programa)
//Almacena y actualiza el dinero disponible del usuario
static double saldo = 1000.00;
//Clave personal por defecto
static int claveCorrecta = 1234;
//Contador de los códigos de operación
static int contadorOperacion = 1000;
//Método principal: Punto de partida donde inicia la ejecución de la aplicación
//static permite que se ejecute sin crear un objeto ya que se asocia a la clase
public static void main(String[] args){
//Se llama a la clase Scanner para leer datos de entrada
Scanner scanner = new Scanner(System.in);
//Variables dentro del método estático main(para usarse en el bucle y switch case
int opcion;
boolean salir = false;
//Bucle principal para que el cajero se mantenga activo
while (!salir) {
System.out.println("\n--- CAJERO AUTOMÁTICO ---");
System.out.println("1. Consultar Saldo");
System.out.println("2. Retirar Efectivo");
System.out.println("3. Depositar Efectivo");
System.out.println("4. Cambiar Clave");
System.out.println("5. Salir");
System.out.print("Elige una opción: ");
try {
//Lee la entrada como texto y la convierte a entero para evitar errores en el menú
String entrada = scanner.nextLine();
opcion = Integer.parseInt(entrada);
switch (opcion) {
case 1:
//Llama al método consultarSaldo y le pasa el scanner(objeto) desde aquí
consultarSaldo(scanner);
break;
case 2:
//Llama al método retirarEfectivo y le pasa el scanner(objeto) desde aquí
retirarEfectivo(scanner);
break;
case 3:
//Llama al método depositarEfectivo y le pasa el scanner(objeto) desde aquí
depositarEfectivo(scanner);
break;
case 4:
//Llama al método cambiarClave y le pasa el scanner(objeto) desde aquí
cambiarClave(scanner);
break;
case 5:
System.out.println("Gracias por usar el cajero. ¡Hasta luego!");
// Cambia a true para romper el while y terminar
salir = true;
break;
default:
System.out.println("Error: Opción no válida. Intente de nuevo.");
}
} catch (NumberFormatException e) {
//Captura el error si el usuario ingresa letras u otros caracteres no numéricos en el menú
System.out.println("Error: Debe ingresar un número entero válido.");
}
}
scanner.close(); // Cierra el scanner al salir del programa
}
// --- MÉTODOS MODULARES ESTÁTICOS ---
public static void consultarSaldo(Scanner scanner) {
System.out.println("\n========================================");
System.out.println("Su saldo actual es: " + saldo + " Bs.");
System.out.println("========================================");
//Pausa para que el usuario pueda leer
System.out.println("\nPresiona ENTER para regresar al menú...");
//Espera a que el usuario presione Enter
scanner.nextLine();
}
public static void retirarEfectivo(Scanner scanner) {
System.out.println("\n--- RETIRO DE EFECTIVO ---");
try {
//1. Solicita seleccionar el tipo de cuenta
System.out.println("Seleccione el tipo de cuenta:");
System.out.println("1. Cuenta Corriente");
System.out.println("2. Cuenta de Ahorros");
System.out.print("Opción: ");
int tipoCuenta = Integer.parseInt(scanner.nextLine());
if (tipoCuenta == 1 || tipoCuenta == 2) {
String nombreCuenta;
if (tipoCuenta == 1) {
nombreCuenta = "Cuenta Corriente";
} else {
nombreCuenta = "Cuenta de Ahorros";
}
System.out.println("\n----------------------------------------");
System.out.println("Cuenta seleccionada: " + nombreCuenta);
System.out.println("----------------------------------------");
//2. Solicita la clave personal y compara
System.out.print("Ingrese su clave personal: ");
int claveIngresada = Integer.parseInt(scanner.nextLine());
if (claveIngresada != claveCorrecta) {
System.out.println("\nError: Clave incorrecta. Operación cancelada.");
} else {
//Si la clave es correcta pasamos al monto
System.out.print("\nIngrese el monto que desea retirar: ");
double montoRetiro = Double.parseDouble(scanner.nextLine());
//3. Validación del monto de retiro
if (montoRetiro > saldo) {
System.out.println("\nError: Fondos insuficientes. Su saldo actual es: " + saldo + " Bs.");
} else if (montoRetiro <= 0) {
System.out.println("\nError: El monto a retirar debe ser mayor a cero.");
} else {
//Resta al saldo global
saldo = saldo - montoRetiro;
//Incrementa el contador de operación
contadorOperacion++;
//Impresión del comprobante obligatorio
System.out.println("\n========================================");
System.out.println(" COMPROBANTE DE RETIRO ");
System.out.println("========================================");
System.out.println("Saldo restante: " + saldo + " Bs.");
System.out.println("Código de Operación: OP-" + contadorOperacion);
System.out.println("Fecha de Emisión: " + LocalDate.now());
System.out.println("========================================");
}
}
} else {
System.out.println("\nError: Tipo de cuenta no válido. Operación cancelada.");
}
} catch (NumberFormatException e) {
System.out.println("\nError: Debe ingresar valores numéricos válidos.");
}
System.out.print("\nPresiona ENTER para regresar al menú...");
scanner.nextLine();
}
public static void depositarEfectivo(Scanner scanner) {
System.out.println("\n--- DEPÓSITO DE EFECTIVO ---");
try {
//Solicita e ingresa el monto a depositar convirtiéndolo a double
System.out.print("Ingrese el monto a depositar: ");
double monto = Double.parseDouble(scanner.nextLine());
//Valida que el monto ingresado sea positivo mayor a cero
if (monto > 0) {
//Suma al saldo global
saldo = saldo + monto;
//Incrementa en 1 el contador con cada operación
contadorOperacion++;
System.out.println("\n========================================");
System.out.println(" ¡DEPÓSITO EXITOSO! ");
System.out.println("========================================");
System.out.println("Nuevo saldo disponible: " + saldo + " Bs.");
System.out.println("Código de Operación: OP-" + contadorOperacion);
System.out.println("Fecha de Emisión: " + LocalDate.now());
System.out.println("========================================");
} else {
System.out.println("Error: El monto debe ser mayor a cero.");
}
} catch (NumberFormatException e) {
System.out.println("Error: Debe ingresar un valor numérico válido.");
}
System.out.println("\nPresiona ENTER para regresar al menú...");
scanner.nextLine();
}
public static void cambiarClave(Scanner scanner) {
System.out.println("\n--- CAMBIO DE CLAVE ---");
try {
//1. Solicitar la clave actual
System.out.print("Ingrese su clave actual: ");
int claveActual = Integer.parseInt(scanner.nextLine());
//2. Validar si coincide con la clave registrada
if (claveActual != claveCorrecta) {
System.out.println("\nError: La clave actual es incorrecta. Operación cancelada.");
} else {
//3. Solicitar la nueva clave
System.out.print("Ingrese su nueva clave (debe ser de 4 dígitos): ");
int nuevaClave = Integer.parseInt(scanner.nextLine());
//4. Validar que sea estrictamente de 4 dígitos (entre 1000 y 9999)
if (nuevaClave >= 1000 && nuevaClave <= 9999) {
//5. Doble confirmación para evitar errores de tipeo
System.out.print("Confirme su nueva clave: ");
int confirmarClave = Integer.parseInt(scanner.nextLine());
if (nuevaClave == confirmarClave) {
//Actualizar la clave global
claveCorrecta = nuevaClave;
//Incrementa el contador de operación
contadorOperacion++;
//Comprobante de éxito
System.out.println("\n========================================");
System.out.println(" COMPROBANTE DE CAMBIO DE CLAVE ");
System.out.println("========================================");
System.out.println("¡Su clave ha sido cambiada exitosamente!");
System.out.println("Código de Operación: OP-" + contadorOperacion);
System.out.println("Fecha de Emisión: " + LocalDate.now());
System.out.println("========================================");
} else {
System.out.println("\nError: Las claves no coinciden. Operación cancelada.");
}
} else {
System.out.println("\nError: La clave debe tener exactamente 4 dígitos (entre 1000 y 9999).");
}
}
} catch (NumberFormatException e) {
System.out.println("\nError: Debe ingresar un número entero válido.");
}
System.out.print("\nPresiona ENTER para regresar al menú...");
scanner.nextLine();
}
}11,270 chars · codepastes.com