3
respostas

[PROJETO] Avaliação de Filmes

    QUAL OUTRA FORMA SERIA POSSIVEL PARA SOLICITAR AS NOTAS PARA O USUARIO? SEM TER UM MINIMO E MAXIMO DE NOTAS NECESSARIAS PARA EFETUAR O CALCULO.

public class Filmes {
    private String titulo;
    private ArrayList<Integer> avaliacoes;

public String getTitulo() {
    return titulo;
}

public Filmes (String titulo){
    this.titulo = titulo;
    this.avaliacoes = new ArrayList<>();
}

public void adicionarAvaliacao(int nota){
    if (nota>=1 && nota <=5){
        avaliacoes.add(nota);
    } else {
        System.out.println("Nota inválida. ");
    }
}

    public double calcularMedia(){
        int soma = 0;
        for (int nota : avaliacoes){
        soma += nota;
        } return (double) soma / avaliacoes.size();
    }
}

public class AvaliaçaoFilmes {
    public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);
    System.out.println("Digite o nome de um filme: ");
    String nomeFilme = scanner.next();
    Filmes filme = new Filmes(nomeFilme);
    System.out.println("Digite 5 avaliações para o filme: ");
    int nota1 = scanner.nextInt();
    int nota2 = scanner.nextInt();
    int nota3 = scanner.nextInt();
    int nota4 = scanner.nextInt();
    int nota5 = scanner.nextInt();
    filme.adicionarAvaliacao(nota1);
    filme.adicionarAvaliacao(nota2);
    filme.adicionarAvaliacao(nota3);
    filme.adicionarAvaliacao(nota4);
    filme.adicionarAvaliacao(nota5);

    System.out.printf("Média das avaliações para %s: %.2f\n",
        filme.getTitulo(), filme.calcularMedia());

        scanner.close();
    }
}
3 respostas

Oi, Letícia! Como vai?

Gostei da forma como você utilizou encapsulamento e uma ArrayList para armazenar as avaliações do filme. Isso mostra um bom entendimento de como guardar vários valores e depois percorrê-los para calcular a média com um for-each.

A estrutura da classe também está bem organizada, separando responsabilidade entre armazenar avaliações e calcular a média.

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

Deixei ali no inicio uma pergunta, se conseguires me dar alguma dica :)
QUAL OUTRA FORMA SERIA POSSIVEL PARA SOLICITAR AS NOTAS PARA O USUARIO?
SEM TER UM MINIMO E MAXIMO DE NOTAS NECESSARIAS PARA EFETUAR O CALCULO.

Oi, Letícia!

Perdão, a pergunta se misturou com a formatação do código e não notei. Uma forma de solicitar avaliações sem definir uma quantidade fixa é permitir que o usuário continue digitando notas até decidir parar. Isso pode ser feito com um laço de repetição (while), perguntando ao usuário se ele deseja continuar avaliando.

Assim, o programa aceita qualquer quantidade de avaliações, e a média será calculada com base no total armazenado na ArrayList.

Siga esses passos para resolver:

  1. Solicitar uma nota.
  2. Adicionar a avaliação ao filme.
  3. Perguntar se o usuário deseja inserir outra nota.
  4. Repetir enquanto a resposta for positiva.

Ajuste seu código assim:


import java.util.Scanner;

public class AvaliacaoFilmes {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("Digite o nome do filme:");
        String nomeFilme = scanner.nextLine();

        Filmes filme = new Filmes(nomeFilme);

        String continuar = "s";

        while (continuar.equalsIgnoreCase("s")) {

            System.out.println("Digite uma nota de 1 a 5:");
            int nota = scanner.nextInt();
            filme.adicionarAvaliacao(nota);

            System.out.println("Deseja adicionar outra avaliação? (s/n)");
            continuar = scanner.next();
        }

        System.out.printf("Média das avaliações para %s: %.2f\n",
                filme.getTitulo(), filme.calcularMedia());

        scanner.close();
    }
}

Pontos importantes:

  • O while permite avaliações ilimitadas, até o usuário decidir parar.
  • A ArrayList armazena todas as notas, independentemente da quantidade.
  • O método calcularMedia() continua funcionando normalmente, pois ele usa avaliacoes.size() para dividir pela quantidade real de notas.

Dessa forma, o programa fica mais flexível e próximo de um sistema real de avaliações.

Fico à disposição!