1
resposta

[Projeto] AvaliacaoDeFilmes

package br.com.nadson.desafiosc8.modelo;

import java.util.ArrayList;
import java.util.List;

public class Filme {

    private String titulo;
    private String diretor;
    private int ano;
    private List<Double> notas = new ArrayList<>();

    public Filme(String titulo, int ano, String diretor) {
        this.titulo = titulo;
        this.ano = ano;
        this.diretor = diretor;
    }

    public void adicionarNota(double nota) {
        if (validarNota(nota)) {
            notas.add(nota);
        } else {
            throw new IllegalArgumentException("Nota inválida: " + nota + ". Deve estar entre 0 e 5.");
        }
    }

    public double calcularMedia() {
        if (notas.isEmpty()) {
            return 0.0;
        }

        double soma = notas.stream()
                           .mapToDouble(Double::doubleValue)
                           .sum();

        return soma / notas.size();
    }

    private boolean validarNota(double nota) {
        return nota >= 0 && nota <= 5;
    }

    @Override
    public String toString() {
        return "Título: " + titulo +
               " (" + ano + ")" +
               ", Diretor: " + diretor +
               ", Média: " + String.format("%.2f", calcularMedia());
    }
}
package br.com.nadson.desafiosc8.principal;

import br.com.nadson.desafiosc8.modelo.Filme;

public class AvaliacaoDeFilmes {
    public static void main(String[] args) {
        Filme filme1 = new Filme("Inception", 2010, "Christopher Nolan");
        filme1.adicionarNota(5);
        filme1.adicionarNota(4);
        filme1.adicionarNota(5);
        filme1.adicionarNota(3);
        filme1.adicionarNota(4);
        System.out.println(filme1);

        Filme filme2 = new Filme("The Matrix", 1999, "The Wachowskis");
        filme2.adicionarNota(5);
        filme2.adicionarNota(5);
        filme2.adicionarNota(4);
        filme2.adicionarNota(5);
        filme2.adicionarNota(5);
        System.out.println(filme2);

    }

}
1 resposta

Oi, Nadson! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Uma dica interessante para o futuro e usar OptionalDouble para tratar a média de forma mais expressiva quando a lista estiver vazia. Veja este exemplo:


public double calcularMedia() {
    return notas.stream()
                .mapToDouble(Double::doubleValue)
                .average()
                .orElse(0.0);
}

Esse código calcula a média das notas e retorna 0.0 quando não existem avaliações, deixando o método mais conciso.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!