import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
class Compra {
String descripcion;
double valor;
LocalDate fecha;
public Compra(String descripcion, double valor) {
this.descripcion = descripcion;
this.valor = valor;
this.fecha = LocalDate.now(); // Fecha actual
}
}
public class LanzadorCompras {
static List<Compra> listaCompras = new ArrayList<>();
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int opcion;
do {
System.out.println("\n--- Menú ---");
System.out.println("1. Hacer Compra");
System.out.println("2. Ver Lista de Compras");
System.out.println("3. Salir");
System.out.print("Ingrese su opción: ");
opcion = scanner.nextInt();
scanner.nextLine(); // Consumir el salto de línea
switch (opcion) {
case 1:
hacerCompra();
break;
case 2:
verListaCompras();
break;
case 3:
System.out.println("¡Hasta luego!");
break;
default:
System.out.println("Opción inválida. Intente de nuevo.");
}
} while (opcion != 3);
}
static void hacerCompra() {
System.out.print("Ingrese la descripción de la compra: ");
String descripcion = scanner.nextLine();
System.out.print("Ingrese el valor de la compra: ");
double valor = scanner.nextDouble();
scanner.nextLine(); // Consumir el salto de línea
Compra nuevaCompra = new Compra(descripcion, valor);
listaCompras.add(nuevaCompra);
System.out.println("Compra realizada con éxito.");
}
static void verListaCompras() {
if (listaCompras.isEmpty()) {
System.out.println("No hay compras registradas.");
return;
}
listaCompras.sort(Comparator.comparingDouble(Compra::getValor).reversed()); // Ordenar por valor descendente
System.out.println("\n--- Lista de Compras ---");
for (Compra compra : listaCompras) {
System.out.println("Descripción: " + compra.descripcion +
", Valor: " + compra.valor +
", Fecha: " + compra.fecha);
}
}
}
Explicación:
Compra: Almacena información sobre cada compra.
LanzadorCompras:
listaCompras: Lista para guardar las compras realizadas.
scanner: Para leer la entrada del usuario.
main: Muestra el menú y maneja las opciones.
hacerCompra: Pide los datos de la compra y la agrega a la lista.
verListaCompras: Ordena las compras por valor y las muestra.
4. Ejecutar la Aplicación
Haz clic derecho en la clase LanzadorCompras y selecciona "Run 'LanzadorCompras.main()'".
Interactúa con el menú para hacer compras y ver la lista ordenada.
¡Importante!
Esta es una versión básica. Para una aplicación real, necesitarías:
Manejo de errores.
Almacenamiento persistente de las compras (base de datos o archivo).
Integración con un sistema de procesamiento de pagos.
Una interfaz gráfica de usuario (GUI) más amigable.