Primera Versión sin ver la solución del profesor.
Clase Main
import Clases.Producto;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.print("Ingrese el limite de la tarjeta: ");
double limiteTarjeta = new Scanner(System.in).nextInt();
boolean salir = false;
ArrayList<Producto> listaProductos = new ArrayList<>();
do {
System.out.println("\n --- WALMART --- ");
System.out.println("1. Realizar Compra");
System.out.println("2. Salir");
System.out.print("Opcion -> ");
int opcion = new Scanner(System.in).nextInt();
switch (opcion) {
case 1:
System.out.print("Escriba la descripcion de la compra: ");
String descripcion = new Scanner(System.in).nextLine();
System.out.print("Escriba el valor de la compra: ");
double valor = new Scanner(System.in).nextDouble();
if (limiteTarjeta > valor) {
listaProductos.add(new Producto(descripcion, valor));
limiteTarjeta = limiteTarjeta - valor;
System.out.println("Compra Realizada!");
} else {
System.out.println("Saldo Insuficiente!");
mostrarListaProductos(listaProductos);
System.out.println("Saldo de la Tarjeta: " + limiteTarjeta);
salir = true;
}
break;
case 2:
mostrarListaProductos(listaProductos);
System.out.println("Saldo de la Tarjeta: " + limiteTarjeta);
salir=true;
break;
default:
System.out.println("Opción Incorrecta, pruebe nuevamente!");
}
} while (!salir);
}
public static void mostrarListaProductos(ArrayList<Producto> listaProductos){
//Me ordena la lista de productos del mas barato al mas caro
listaProductos.sort(Comparator.comparing(Producto::getPrecio));
//isEmpty comprueba si la listaProductos está vacia o no
if (!listaProductos.isEmpty()) {
System.out.println("\n********************");
System.out.println("COMPRAS REALIZADAS: ");
for (Producto producto : listaProductos) {
System.out.println(producto.toString());
}
System.out.println("\n********************");
System.out.println("\nGracias por su visita!");
} else {
System.out.println("\nGracias por su visita!");
}
}
}
Clase Producto
package Clases;
public class Producto {
private String descripcion;
private double precio;
public Producto(String descripcion, double precio) {
this.descripcion = descripcion;
this.precio = precio;
}
public double getPrecio() {
return precio;
}
@Override
public String toString() {
return descripcion + " - " + precio;
}
}