Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Aca dejo el codigo de mi desafio de la tarjeta

Clase principal: package com.alura.desafio;

import java.util.ArrayList; import java.util.List; import java.util.Scanner;

public class Principal { public static void main(String[] args) { Scanner sc = new Scanner(System.in); List listaCompras = new ArrayList<>();

    System.out.println("=== Sistema de Compras con Tarjeta de Crédito ===");
    System.out.print("Ingrese el límite de su tarjeta de crédito: $");
    double limite = sc.nextDouble();
    sc.nextLine(); // limpiar buffer

    String continuar = "si";

    while (continuar.equalsIgnoreCase("si")) {
        System.out.print("\nIngrese el nombre del producto: ");
        String producto = sc.nextLine();

        System.out.print("Ingrese el monto de la compra: $");
        double monto = sc.nextDouble();
        sc.nextLine(); // limpiar buffer

        if (monto > limite) {
            System.out.println("❌ No tiene suficiente saldo para esta compra.");
        } else {
            listaCompras.add(new Compras(producto, monto));
            limite -= monto;
            System.out.printf("✅ Compra realizada. Saldo restante: $%.2f\n", limite);
        }

        // Preguntar si desea continuar
        System.out.print("¿Desea realizar otra compra? (si/no): ");
        continuar = sc.nextLine();

        // Validar si el usuario quiere salir antes de quedarse sin saldo
        if (!continuar.equalsIgnoreCase("si")) {
            break;
        }

        if (limite <= 0) {
            System.out.println("⚠️ Ha alcanzado el límite de su tarjeta.");
            break;
        }
    }

    // Ordenar por producto (orden alfabético ascendente)
    listaCompras.sort((c1, c2) -> c1.getProducto().compareToIgnoreCase(c2.getProducto()));

    System.out.println("\n=== Lista de compras realizadas (ordenadas por producto) ===");
    if (listaCompras.isEmpty()) {
        System.out.println("No se realizaron compras.");
    } else {
        for (Compras c : listaCompras) {
            System.out.printf("- %s: $%.2f\n", c.getProducto(), c.getMonto());
        }
    }

    System.out.printf("\nSaldo restante en la tarjeta: $%.2f\n", limite);
    System.out.println("Gracias por usar la aplicación. ¡Hasta pronto!");
}

}

Clase Compras: package com.alura.desafio;

public class Compras { private String producto; private double monto;

public Compras(String producto, double monto) {
    this.producto = producto;
    this.monto = monto;
}

public void setProducto(String producto) {
    this.producto = producto;
}

public void setMonto(double monto) {
    this.monto = monto;
}

public String getProducto() {
    return producto;
}

public double getMonto() {
    return monto;
}

}

1 respuesta

Hola Carlos, espero que estés bien

Tu código parece estar bastante bien estructurado para el desafío de la tarjeta de crédito. Has implementado correctamente la clase Compras y la clase Principal para gestionar las compras y el saldo de la tarjeta. Aquí hay algunos puntos que podrías considerar para mejorar o verificar:

  1. Validación de Entradas: Aunque tu código ya verifica si el monto de la compra excede el límite de la tarjeta, podrías agregar validaciones adicionales para asegurarte de que el usuario no ingrese valores negativos o no numéricos para el monto de la compra y el límite de la tarjeta.

  2. Manejo de Excepciones: Considera el uso de manejo de excepciones para capturar posibles errores de entrada del usuario, como InputMismatchException cuando se espera un número y el usuario ingresa un texto.

  3. Comentarios en el Código: Aunque el código es bastante claro, agregar comentarios puede ayudar a otros (y a ti mismo en el futuro) a entender rápidamente la lógica detrás de cada sección.

  4. Cerrar el Scanner: Es una buena práctica cerrar el objeto Scanner al final del uso para liberar recursos. Puedes hacerlo añadiendo sc.close(); al final del método main.

  5. Pruebas y Casos de Uso: Asegúrate de probar tu aplicación con diferentes casos de uso, como límites muy bajos, montos de compra altos, y entradas no válidas, para asegurarte de que tu aplicación maneja todos los casos correctamente.

Espero que estas sugerencias te sean útiles. ¡Buen trabajo en tu desafío y espero que sigas disfrutando del curso!

Espero haber ayudado y buenos estudios!