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.");
}
}
}