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

Desafio final

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Introduce el límite de tu tarjeta: ");
        double limite = scanner.nextDouble();
        TarjetaCredito tarjeta = new TarjetaCredito(limite);

        while (true) {
            System.out.print("Introduce la descripción de la compra (o escribe 'salir' para terminar): ");
            String descripcion = scanner.next();
            if (descripcion.equalsIgnoreCase("salir")) {
                break;
            }

            System.out.print("Introduce el valor de " + descripcion + ": ");
            double valor = scanner.nextDouble();

            Compra compra = new Compra(descripcion, valor);
            tarjeta.agregarCompra(compra);

            System.out.print("¿Quieres continuar comprando? (1 para sí, 0 para no): ");
            int continuar = scanner.nextInt();
            if (continuar == 0) {
                break;
            }
        }

        tarjeta.mostrarResumen();
        scanner.close();
    }
}
public class Compra implements Comparable<Compra> {
    private String descripcion;
    private double valor;

    public Compra(String descripcion, double valor) {
        this.descripcion = descripcion;
        this.valor = valor;
    }

    public String getDescripcion() {

        return descripcion;
    }

    public double getValor() {

        return valor;
    }

    @Override
    public String toString() {
        return "Compra{" +
                "descripcion='" + descripcion + '\'' +
                ", valor=" + valor +
                '}';
    }

    @Override
    public int compareTo(Compra otraCompra) {
        return Double.valueOf(this.valor).compareTo(Double.valueOf(otraCompra.getValor()));
    }
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class TarjetaCredito {
    private double limite;
    private double saldo;
    private List<Compra> listaCompras;

    public TarjetaCredito(double limite) {
        this.limite = limite;
        this.saldo = limite;
        this.listaCompras = new ArrayList<>();
    }

    public void agregarCompra(Compra compra) {
        if (compra.getValor() <= saldo) {
            listaCompras.add(compra);
            saldo -= compra.getValor();
            System.out.println("Compra de " + compra.getDescripcion() + " por " + compra.getValor() + " registrada. Saldo restante: " + saldo);
        } else {
            System.out.println("Saldo insuficiente para comprar " + compra.getDescripcion() + " por " + compra.getValor());
        }
    }

    public void mostrarResumen() {
        Collections.sort(listaCompras, Comparator.comparingDouble(Compra::getValor));
        System.out.println("\nResumen de compras realizadas (de menor a mayor):");
        for (Compra compra : listaCompras) {
            System.out.println(compra.getDescripcion() + ": " + compra.getValor());
        }
        System.out.println("Saldo restante en la tarjeta: " + saldo);
    }

}
1 respuesta

Hola Luis, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!