Compra.java
public class Compra implements Comparable {
private double monto;
private String descripcion;
public Compra(double monto, String descripcion) {
this.monto = monto;
this.descripcion = descripcion;
}
public double getMonto() {
return monto;
}
public String getDescripcion() {
return descripcion;
}
@Override
public String toString() {
return "Compra: valor=" + monto +
", descripcion='" + descripcion;
}
@Override
public int compareTo(Compra otraCompra) {
return Double.valueOf(this.monto).compareTo(Double.valueOf(otraCompra.getMonto()));
}
}
Principal.java
import java.util.Collections;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Escriba el límite de la tarjeta: ");
double limite = scanner.nextDouble();
scanner.nextLine();
TarjetaDeCredito tarjeta = new TarjetaDeCredito(limite);
int opcion = 1;
while(opcion != 0) {
System.out.println("Escriba la descripción de la compra:");
String descripcion = scanner.nextLine();
System.out.println("Escriba el valor de la compra:");
double monto = scanner.nextDouble();
scanner.nextLine();
if (monto <= 0) {
System.out.println("El valor de la compra debe ser mayor que 0.");
continue;
}
Compra compra = new Compra(monto, descripcion);
boolean compraRealizada = tarjeta.lanzarCompra(compra);
if (compraRealizada) {
System.out.println("Compra realizada!");
do {
System.out.println("Escriba 0 para salir o 1 para continuar");
opcion = scanner.nextInt();
scanner.nextLine();
if (opcion != 0 && opcion != 1) {
System.out.println("Opción inválida. Ingrese 0 o 1.");
}
} while (opcion != 0 && opcion != 1);
} else {
System.out.println("Saldo insuficiente!");
opcion = 0;
}
}
System.out.println("***********************");
System.out.println("COMPRAS REALIZADAS:\n");
Collections.sort(tarjeta.getListaDeCompras());
for (Compra compra : tarjeta.getListaDeCompras()) {
System.out.println(compra.getDescripcion() + " - " +compra.getMonto());
}
System.out.println("\n***********************");
System.out.println("\nSaldo de la tarjeta: " +tarjeta.getSaldo());
}
}
TarjetaDeCredito.java
import java.util.ArrayList;
import java.util.List;
public class TarjetaDeCredito {
private double limite;
private double saldo;
private List listaDeCompras;
public TarjetaDeCredito(double limite) {
this.limite = limite;
this.saldo = limite;
this.listaDeCompras = new ArrayList<>();
}
public boolean lanzarCompra(Compra compra){
if (compra.getMonto() <= 0) {
return false;
}
if(this.saldo >= compra.getMonto()){
this.saldo -= compra.getMonto();
this.listaDeCompras.add(compra);
return true;
}
return false;
}
public double getLimite() {
return limite;
}
public double getSaldo() {
return saldo;
}
public List<Compra> getListaDeCompras() {
return listaDeCompras;
}
}