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);
}
}