Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Minha solução para fim do programa

    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 sua avaliação para o filme de 0 a 10 ou -1 para encerrar");
            nota = leitura.nextDouble();
            mediaAvaliacao += nota;
            totalDeNotas++;

            if (nota != -1) {
                mediaAvaliacao += nota;
                totalDeNotas++;
            }
        }
               double resultado = mediaAvaliacao / totalDeNotas;
        if (resultado >= 0 || resultado <= 10) {
            System.out.println("""
                    Média de avaliações %.2f
                    Fim Do programa!
                    """.formatted(resultado));
        } else {
            System.out.println("Fim do programa!");
        }
    }
}
1 resposta
solução!

Olá, Lougans! Como vai?

Seu código parece estar quase correto, mas há um pequeno problema na lógica do condicional que verifica o resultado.

Você está usando o operador lógico "ou" (||), o que significa que se qualquer uma das condições for verdadeira, o bloco de código será executado. No seu caso, como o resultado sempre será maior ou igual a 0, ou menor, ou igual a 10, o bloco de código sempre será executado.

Para corrigir isso, você deve usar o operador lógico "e" (&&), que só executará o bloco de código se ambas as condições forem verdadeiras. Ou seja, o resultado deve estar entre 0 e 10. Aqui está a correção:

if (resultado >= 0 && resultado <= 10) {
    System.out.println("""
            Média de avaliações %.2f
            Fim Do programa!
            """.formatted(resultado));
} else {
    System.out.println("Fim do programa!");
}

Além disso, notei que você está incrementando totalDeNotas e somando nota à mediaAvaliacao duas vezes quando a nota é diferente de -1. Isso provavelmente causará uma média incorreta, pois você está contando duas vezes a mesma nota.

Você deve remover o bloco de código duplicado, onde totalDeNotas e mediaAvaliacao, deve ser incrementados somente dentro do if.

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

Bons estudos!