Main
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int opcion;
Scanner teclado = new Scanner(System.in);
// Solicita el límite de la tarjeta
System.out.println("Escriba el límite de la tarjeta: ");
double limite = teclado.nextDouble();
Tarjeta tarjeta = new Tarjeta(limite);
System.out.println("--------------------------");
// Menú
String menu = """
Digite la opción:
1. Seguir comprando
2. Salir
""";
do {
System.out.println(menu);
opcion = teclado.nextInt();
switch (opcion) {
case 1:
// Descripción y valor de la compra
System.out.println("Escriba la descripción de su compra: ");
teclado.nextLine(); // Consumir el salto de línea que queda al usar nextInt()
String descripcion = teclado.nextLine();
System.out.println("Escriba el valor de la compra: ");
double valor = teclado.nextDouble();
// Crear una nueva compra y verificar si es posible realizarla
Compra compra = new Compra(valor, descripcion);
boolean compraRealizada = tarjeta.lanzarCompra(compra);
if (compraRealizada) {
System.out.println("¡Compra realizada!");
} else {
// Si no se puede realizar la compra, mostrar la lista de compras
System.out.println("Saldo insuficiente");
System.out.println("---------------------");
System.out.println("Compras realizadas:\n");
Collections.sort(tarjeta.getListaDeCompras());
for (Compra compra1 : tarjeta.getListaDeCompras()) {
System.out.println(compra1.getDescripcion() + " - $" + compra1.getValor());
}
System.out.println("\n-----------------------");
System.out.println("\nSaldo restante: " + tarjeta.getSaldo());
// Salir del bucle ya que el saldo es insuficiente
opcion = 2;
}
break;
case 2:
// Mostrar las compras realizadas y el saldo final
System.out.println("Saliendo del programa");
System.out.println("---------------------");
Collections.sort(tarjeta.getListaDeCompras());
System.out.println("Compras realizadas:\n");
for (Compra compra1 : tarjeta.getListaDeCompras()) {
System.out.println(compra1.getDescripcion() + " - $" + compra1.getValor());
}
System.out.println("\n-----------------------");
System.out.println("\nSaldo restante: " + tarjeta.getSaldo());
break;
default:
System.out.println("Opción no válida, intente de nuevo.");
}
} while (opcion != 2); // Repite hasta que se elija la opción de salir
teclado.close(); // Cerrar el escáner al final
}
}
Compra
public class Compra implements Comparable<Compra> {
private double valor;
private String descripcion;
public Compra(double valor, String descripcion) {
this.valor = valor;
this.descripcion = descripcion;
}
public double getValor() {
return valor;
}
public String getDescripcion() {
return descripcion;
}
@Override
public String toString() {
return "Compra: valor = $" + valor +
", descripcion = " + descripcion + '\'';
}
@Override
public int compareTo(Compra otraCompra) {
return Double.valueOf(this.valor).compareTo(Double.valueOf(otraCompra.getValor()));
}
}