1
resposta

Minha solução

Tirei a mensagem "Média de avaliação NaN" , colocando fora do while, uma condição if para verificar se meu totalDeNotas é maior que 0 e um else para quando eu digitar -1 o programa finaliza com a mensagem "Obrigado por usar nosso programa". Assim, quando colocamos -1 ele entra no if dentro do while para verificar se é diferente de -1, não sendo, ele volta para o início (while) para verifcar se é diferente de -1 também, para saber se a pergunta "Diga a sua avaliacao do filme ou digite -1 para encerrar" deve ser repetida, e aí da false também, depois ele sai do while e cai na condição que eu criei fora do while, para tirar a mensagem de avaliação do NaN, porque ele também vai verificar se o totalDeNotas é maior que 0, e como no caso -1 é menor que 0 ele dará false e vai cair no else encerrando o programa com a mensagem: "Obrigado por usar nosso programa". Do contrário, enquanto eu digitar uma nota válida maior que -1 ele segue o fluxo do while, enquanto eu estiver digitando uma nota maior que -1, quando eu digitar -1 ele cai no if fora do while e calcula se a nota é maior que 0, e sendo maior que 0 ele faz o calculo "Média de avaliações: " + mediaAvaliacao / totalDeNotas. (Detalhe: minha explicação veio ao debugar o código)

import java.util.Scanner;

public class OutroLoop {

    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("Diga a sua avaliacao do filme ou digite -1 para encerrar ");
            nota = leitura.nextDouble();

            if (nota != -1) {
                mediaAvaliacao += nota;
                totalDeNotas++;
            }

        }
        if (totalDeNotas > 0) {
            System.out.println("Média de avaliações: " + mediaAvaliacao / totalDeNotas);
        } else {
            System.out.println("Obrigado por usar nosso programa.");
        }
    }
}
1 resposta

Boa, Erivan!

Ótimo raciocínio! A verificação se totalDeNotas é maior que 0 antes de calcular a média é uma excelente maneira de evitar a divisão por zero, que resulta em NaN (Not a Number), e assim gerar uma experiência melhor na sua aplicação.

Sua solução foi inteligente e eficaz, obrigada por compartilhar com o fórum e parabéns por ir além daquilo que é proposto em aula.

Abraços e bons estudos.