File size: 3,131 Bytes
938244c 8efe770 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
---
license: epl-2.0
---
import java.util.*;
public class CinemaEclipse {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Bienvenido al Cine en Eclipse. \n Por favor, seleccione una de las opciones a continuación:");
System.out.println("1. Comprar entradas");
System.out.println("2. Ver cartelera");
System.out.println("3. Ver promociones");
System.out.println("4. Salir");
int opcion = scanner.nextInt();
switch(opcion){
case 1:
comprarEntradas();
break;
case 2:
verCartelera();
break;
case 3:
verPromociones();
break;
case 4:
System.out.println("Gracias por visitar el cine en Eclipse. Hasta luego!");
break;
}
}
// Implementación del patrón GoF Factory
private static MovieFactory movieFactory = new MovieFactory();
// Colección de películas de la cartelera
private static List<Movie> cartelera = new ArrayList<>();
// Colección de promociones
private static Set<Promotion> promociones = new HashSet<>();
// Coleccion de entradas vendidas
private static Map<Movie, Integer> entradasVendidas = new HashMap<>();
// Método para comprar entradas
private static void comprarEntradas(){
Scanner scanner = new Scanner(System.in);
System.out.println("Por favor, seleccione una de las películas de la cartelera:");
for(Movie movie : cartelera){
System.out.println(movie.getTitle());
}
String peliculaSeleccionada = scanner.nextLine();
// Busca la película dentro de la cartelera
Movie movie = cartelera.stream()
.filter(m -> m.getTitle().equals(peliculaSeleccionada))
.findFirst()
.orElse(null);
if(movie != null){
System.out.println("Cuántas entradas desea comprar?");
int cantidadEntradas = scanner.nextInt();
// Usa una expresión Lambda Supplier para obtener el precio de la entrada
double precio = () -> movie.getPrice() * cantidadEntradas;
// Usa una expresión Lambda Consumer para guardar la cantidad de entradas vendidas
entradasVendidas.merge(movie, cantidadEntradas, Integer::sum);
System.out.println("El precio total es: " + precio);
System.out.println("Gracias por su compra!");
}
}
// Método para ver la cartelera
private static void verCartelera(){
System.out.println("Cartelera:");
cartelera.forEach(movie -> {
// Usa una expresión Lambda Function para imprimir la cartelera
System.out.println(movie.getTitle() + " - " + movie.getPrice() + "€");
});
}
// Método para ver las promociones
private static void verPromociones(){
System.out.println("Promociones:");
promociones.forEach(promotion -> {
System.out.println(promotion.getName() + ": " + promotion.getDiscount() + "% de descuento!");
});
}
}
|