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

Dúvida exercício while / if com contador

Pessoal boa noite, estou fazendo o exercício abaixo para treinar estruturas de repetição mas esse é um pouco mais complicado do que estou acostumada.

"Faça um programa que leia o valor das notas de alunos com até uma casa decimal, até que seja digitado um valor menor que zero. Assim que o valor menor que zero for digitado o programa deve mostrar o valor da menor nota, o valor da maior nota e a média das notas digitadas. Considere que ao menos uma nota será digitada antes de se digitar valor negativo."

Estou travada em uma parte que envolve o contador, ele digital a soma total das notas corretamente, ele ignora a nota negativa na hora da soma.

Só que na hora de calcular a média das notas o contador está contando também com a nota negativa digitada, por exemplo: se digito 10+10+10-5 ele dá uma média de 7.5 (que é 30 / 4), eu nunca passei por algo parecido, alguém poderia me ajudar? Vou colocar aqui embaixo a forma que eu fiz.

import javax.swing.JOptionPane;

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

      double nota = 0;
      int contador = 1;
      double totalNotas = 0;
      double menorNota = 0;
      double maiorNota = 0;
      double mediaNotas;

      while (nota >= 0) {
      nota = Double.parseDouble(JOptionPane.showInputDialog("Digite a nota")); 


      if (nota >=0) {
      totalNotas = totalNotas + nota;
      contador ++;   

      }     

      }

      JOptionPane.showMessageDialog(null, "Total das notas " + totalNotas);

      if (nota==1) {

      menorNota = nota;
      maiorNota = nota;

      } else if (nota > maiorNota) {
      maiorNota = nota;
      }


     mediaNotas = totalNotas / contador; 
     JOptionPane.showMessageDialog(null,"A média das notas é " + mediaNotas);
}
2 respostas
solução!

Oi Júlia

O seu contador esta começando com 1, ok ? Apesar do exercício pedir pra você considerar que ao menos uma nota será digitada antes de se digitar valor negativo (pra poder evitar o problemas de divisão por zero), você poderia inicializar o contador com zero e pra calcular a média das notas você faria o seguinte teste:

if(contador>0){
        mediaNotas = totalNotas / contador; 
     JOptionPane.showMessageDialog(null,"A média das notas é " + mediaNotas);
}else JOptionPane.showMessageDialog(null,"Nenhuma nota digitada");

Realmente Jefferson, era isso mesmo. Muito obrigada!