Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Laços de repetição com while

Antes da Jacqueline resolver o problema, pausei a aula e tentei resolver sozinho e fiz dessa forma.

import java.util.Scanner;
public class LoopWhile {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        double mediaAvaliacao = 0;
        double nota = 0;
        int totalDeNotas = 0;

        while (nota != -1) {
            System.out.println("Digite sua avaliação para o filme ou -1 para encerrar.");
            nota = leitura.nextDouble();
            mediaAvaliacao += nota;
            totalDeNotas++;
        }
        
        totalDeNotas -= 1;
        mediaAvaliacao += 1;
        
        System.out.println(String.format("A avaliação média do Filme é %.2f", mediaAvaliacao / totalDeNotas));
    }
}
2 respostas
solução!

Olá Marcell!

A solução que você apresentou está quase correta, mas há um pequeno erro na lógica. O problema é que você está somando a nota -1 na média e incrementando o total de notas, o que não deveria acontecer.

Para corrigir isso, você pode adicionar um if dentro do laço while para verificar se a nota é diferente de -1 antes de somá-la à média e incrementar o total de notas. Assim, apenas as notas válidas serão consideradas. Ficaria assim:

while (nota != -1) {
    System.out.println("Digite sua avaliação para o filme ou -1 para encerrar.");
    nota = leitura.nextDouble();
    
    if (nota != -1) {
        mediaAvaliacao += nota;
        totalDeNotas++;
    }
}

System.out.println(String.format("A avaliação média do Filme é %.2f", mediaAvaliacao / totalDeNotas));

Dessa forma, o laço while continuará executando enquanto a nota for diferente de -1, e apenas as notas válidas serão somadas à média e incrementadas no total de notas.

Espero ter ajudado! Bons estudos!

Olá Lucas!

Muito obrigado pelo feedback.