A la comunidad dejo aquí mi propuesta
package com.alura.screenmatch.principal;
import com.alura.screenmatch.modelos.Compra;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Prueba {
public static void main(String[] args) {
Scanner lectura = new Scanner(System.in);
List<Compra> listaCompras = new ArrayList<>();
int opcion;
String menu = """
- 0 .Para Salir
- 1 .Para Continuar
""";
double valorCompraTotal = 0;
System.out.println("Ingrese el límite de credito de la tarjeta:");
double saldoInicial = lectura.nextDouble();
lectura.nextLine();
do {
System.out.println("Ingrese producto a comprar:");
String nombreProducto = lectura.nextLine();
System.out.println("Ingrese precio de producto:");
double precioProducto = lectura.nextDouble();
lectura.nextLine();
Compra producto = new Compra(nombreProducto, precioProducto);
valorCompraTotal += precioProducto;
if (valorCompraTotal > saldoInicial) {
System.out.println("Saldo insuficiente!!!");
valorCompraTotal -= precioProducto;
break;
}
listaCompras.add(producto);
System.out.println("*****Compra realizada!!!*****");
do {
System.out.println(menu);
System.out.println("Ingrese una opción, por favor:");
opcion = lectura.nextInt();
lectura.nextLine();
if (opcion != 0 && opcion != 1) {
System.out.println("Opción inválida, ingrese nuevamente.");
}
}while (opcion != 0 && opcion != 1) ;
} while (opcion != 0);
saldoInicial -= valorCompraTotal;
listaCompras.sort(Comparator.comparing(Compra::getValor));
System.out.println("""
****************************
*****COMPRAS REALIZADAS*****
""");
for (Compra item : listaCompras) {
System.out.print("""
%s - $%.2f
""".formatted(item.getNombre(), item.getValor()));
}
System.out.println(" ---------------------------");
System.out.println(" Valor Total= " + String.format("$%.2f", valorCompraTotal));
System.out.println(" Saldo Disponible en la tarjeta= $" + saldoInicial);
}
}