Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

01 Desafío: construyendo una nueva aplicación

//Main

import java.util.ArrayList;
import java.util.Scanner;

public class AppTodoJuegos {
    private static ArrayList<Videojuego> videojuegos = new ArrayList<>();

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("\nMenú Principal:");
            System.out.println("1. Agregar nuevo videojuego");
            System.out.println("2. Mostrar videojuegos");
            System.out.println("3. Clasificar videojuegos por promedio de valoraciones");
            System.out.println("4. Salir");

            System.out.print("Seleccione una opción: ");
            int opcion = scanner.nextInt();
            scanner.nextLine(); // Limpiar entrada

            switch (opcion) {
                case 1:
                    agregarVideojuego(scanner);
                    break;
                case 2:
                    mostrarVideojuegos();
                    break;
                case 3:
                    clasificarPorValoraciones();
                    break;
                case 4:
                    System.out.println("¡Hasta luego!");
                    return;
                default:
                    System.out.println("Opción inválida. Intente nuevamente.");
            }
        }
    }

    private static void agregarVideojuego(Scanner scanner) {
        System.out.print("Ingrese el nombre del videojuego: ");
        String nombre = scanner.nextLine();
        System.out.print("Ingrese la descripción del videojuego: ");
        String descripcion = scanner.nextLine();
        System.out.print("Ingrese la fecha de lanzamiento: ");
        int fechaLanzamiento = Integer.parseInt(scanner.nextLine());
        System.out.print("Ingrese la consola: ");
        String consola = scanner.nextLine();
        System.out.print("Ingrese la categoría: ");
        String categoria = scanner.nextLine();
        System.out.print("Califica el juego: ");
        int valoraciones = Integer.parseInt(scanner.nextLine());

        Videojuego nuevoJuego = new Videojuego(nombre, descripcion, valoraciones, consola, categoria);
        videojuegos.add(nuevoJuego);
        System.out.println("¡Videojuego agregado exitosamente!");
    }

    private static void mostrarVideojuegos() {
        if (videojuegos.isEmpty()) {
            System.out.println("No hay videojuegos registrados.");
        } else {
            for (Videojuego juego : videojuegos) {
                System.out.println(juego);
                System.out.println("--------------------");
            }
        }
    }

    private static void clasificarPorValoraciones() {
        videojuegos.sort((v1, v2) -> Double.compare(v2.obtenerPromedioValoracion(), v1.obtenerPromedioValoracion()));
        System.out.println("Videojuegos clasificados por promedio de valoraciones:");
        mostrarVideojuegos();
    }
}

// Clase Video Juego

import java.util.ArrayList;

public class Videojuego {
    private String nombre;
    private String descripcion;
    private int fechaLanzamiento;
    private String consola;
    private String categoria;
    private ArrayList<Integer> valoraciones;

    public Videojuego(String nombre, String descripcion, int fechaLanzamiento, String consola, String categoria) {
        this.nombre = nombre;
        this.descripcion = descripcion;
        this.fechaLanzamiento = fechaLanzamiento;
        this.consola = consola;
        this.categoria = categoria;
        this.valoraciones = new ArrayList<>();
    }

    public void agregarValoracion(int valoracion) {
        if (valoracion >= 1 && valoracion <= 5) {
            valoraciones.add(valoracion);
        } else {
            System.out.println("Por favor, ingrese una valoración entre 1 y 5.");
        }
    }

    public double obtenerPromedioValoracion() {
        if (valoraciones.isEmpty()) {
            return 0;
        }
        double suma = 0;
        for (int valor : valoraciones) {
            suma += valor;
        }
        return suma / valoraciones.size();
    }

    @Override
    public String toString() {
        return "Nombre: " + nombre + "\nDescripción: " + descripcion + "\nFecha de Lanzamiento: " + fechaLanzamiento +
                "\nConsola: " + consola + "\nCategoría: " + categoria + "\nPromedio de Valoraciones: " + obtenerPromedioValoracion();
    }
}
1 respuesta

Una posible mejora sería modificar la línea donde se crea el objeto Videojuego en el método agregarVideojuego() para añadir la calificación así:

nuevoJuego.agregarValoracion(valoraciones);