Calcular média. Está dando valores incoerentes

9 respostas
F

Se eu digito por exemplo 2, 6 e 9, ele informa que a média é 1.5. Pela calculadora, o resultado é 0,037037037...

import java.util.*;
public class Numeros{
public static void main(String args[]){
	Scanner s= new Scanner(System.in);
	
	float n, Acumulador=0;
	
do{
	System.out.println("Digite um numero maior do que zero");
	 n=s.nextFloat();
	 
	 
	 if(n&gt0){
	 Acumulador=Acumulador+1;
	}
	
	
	}while(n&gt0);
		System.out.println("Media="+ Acumulador/2);
		
		}
		
		
	}

9 Respostas

shison

Colega
você tem um acumulador que está somando a quantidade de números que estão sendo entrados.
No final você divide este número por 2 independente de quais ou quantos números foram entrados.
No seu exemplo de entrada, você está dividindo 3 por 2 o que resulta em 1,5.

Use algo do tipo:
float n;
float Acumulador = 0;
int numeros = 0;
do {
	System.out.println("Digite um numero maior do que zero");
	n = s.nextFloat();
 	 
	if(n & gt0) {
		Acumulador += n;
		numeros ++;
	}
 	
} while(n&gt0);
System.out.println("Media = " + Acumulador / numeros);
F

Não entendi. Acumulador concatenado e n sendo atribuído a ele? Deu erro.

“Illegal start of expression”.

F
leandrogremista

Tenta assim, amigo!
Abraço!!

import java.util.*;

public class Numeros{

public static void main(String args[]){
        Scanner s= new Scanner(System.in);

        float n, Acumulador=0;
        int contador = 0;

 do{
        System.out.println("Digite um numero maior do que zero: ");
         n=s.nextFloat();


         if(n > 0){
            Acumulador = Acumulador + n;
            contador   = contador + 1;
        }


    }while(n > 0);

    System.out.println("Media = " + Acumulador / contador);
    }

}

leandrogremista

O correto seria tirar o IF desnecessário, ficando assim:

import java.util.*;

public class Numeros{

public static void main(String args[]){
Scanner s= new Scanner(System.in);

float n, Acumulador=0;
int contador = 0;

do{

System.out.println("Digite um numero maior do que zero: ");

n=s.nextFloat();

Acumulador = Acumulador + n;
contador = contador + 1;

}while(n > 0);

System.out.println("Media = " + Acumulador / contador);
}

}

F

Bom,compilou mas os valores estão errados. Exemplo: 5, 5 e 5. Média: 1.5.

J

Olha este código aqui, acho que tá blz...

import java.util.*;
  
  public class Numeros{
  	public static void main(String args[]){
  		
  		Scanner s = new Scanner(System.in);
  		
  		double n=0, acumulador=0;
  		int contador = 0;
  		
  		do{
  			System.out.println("Digite um numero maior do que zero: ");
  			n=s.nextDouble();
  			if(n!=0){
  				acumulador = acumulador + n;
  				contador++;
  			}
  		}while(n>0);
  		
  		System.out.println("Media = "+ (acumulador / contador));
  	}
  
  }
B

Acho que agora está Ok! testa ele ai…

import java.util.*;
 
 public class Numeros{
 	public static void main(String args[]){
 		
 		Scanner s = new Scanner(System.in);
 		
 		double n=0, acumulador=0;
 		int contador = 0;
 		
 		do{
 			System.out.println("Digite um numero maior do que zero: ");
 			n=s.nextDouble();
 			if(n>0){
 				acumulador = acumulador + n;
 				contador++;
 			}
 		}while(n>0);
 		
 		System.out.println("Media = "+ (acumulador / contador));
 	}
 
 }
F

Obrigado mesmo! :smiley:

Criado 9 de março de 2007
Ultima resposta 10 de mar. de 2007
Respostas 9
Participantes 5