class Principal
import java.util.Collections;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner lectura = new Scanner(System.in);
TarjetaDeCredito tarjeta = inicializarTarjeta(lectura);
realizarCompras(lectura, tarjeta);
mostrarResumen(tarjeta);
}
public static TarjetaDeCredito inicializarTarjeta(Scanner lectura) {
double limite = 0;
boolean limiteValido = false;
while (!limiteValido) {
System.out.println("Escriba el limite de la tarjeta");
try {
limite = lectura.nextDouble();
if (limite <= 0) {
System.out.println("El límite debe ser mayor que 0.");
} else {
limiteValido = true;
}
} catch (InputMismatchException e) {
System.out.println("Por favor, ingrese un número válido.");
lectura.next(); // Limpia el valor incorrecto del scanner
}
}
return new TarjetaDeCredito(limite);
}
public static void realizarCompras(Scanner lectura, TarjetaDeCredito tarjeta) {
int salir = 1;
while (salir != 0) {
System.out.println("Escriba la descripcion de la compra");
String descripcion = lectura.next();
double valor = 0;
boolean valorValido = false;
while (!valorValido) {
System.out.println("Escriba el valor de la compra");
try {
valor = lectura.nextDouble();
if (valor <= 0) {
System.out.println("El valor de la compra debe ser mayor que 0.");
} else {
valorValido = true;
}
} catch (InputMismatchException e) {
System.out.println("Por favor, ingrese un número válido.");
lectura.next(); // Limpia el valor incorrecto del scanner
}
}
Compra compra = new Compra(valor, descripcion);
boolean compraRealizada = tarjeta.lanzarCompra(compra);
if (compraRealizada) {
System.out.println("Compra realizada");
} else {
System.out.println("Saldo insuficiente");
}
System.out.println("Escriba 0 para salir o 1 para continuar");
salir = lectura.nextInt();
}
}
public static void mostrarResumen(TarjetaDeCredito tarjeta) {
System.out.println("********************");
System.out.println("COMPRAS REALIZADAS:\n");
Collections.sort(tarjeta.getListaDeCompras());
for (Compra compra : tarjeta.getListaDeCompras()) {
System.out.println(compra.getDescripcion() + " - " + compra.getValor());
}
System.out.println("\n*******************");
System.out.println("\nSaldo de la tarjeta: " + tarjeta.getSaldo());
}
}
Class Compras
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()));
}
}
Class Tarjeta de Credito
import java.util.ArrayList;
import java.util.List;
public class TarjetaDeCredito {
private double limite;
private double saldo;
private List<Compra> listaDeCompras;
public TarjetaDeCredito(double limite) {
this.limite = limite;
this.saldo = limite;
this.listaDeCompras = new ArrayList<>();
}
public boolean lanzarCompra(Compra compra){
if (this.saldo >= compra.getValor()){
this.saldo -= compra.getValor();
this.listaDeCompras.add(compra);
return true;
}
return false;
}
public double getLimite() {
return limite;
}
public double getSaldo() {
return saldo;
}
public List<Compra> getListaDeCompras() {
return listaDeCompras;
}
}