Calcular média aritmética!

Pessoal, estou tentando resolver o seguinte exercício: “Entrar com números enquanto forem positivos e imprimir a média e quantos números foram digitados.” Consegui resolver quase todo o exercício, mas estou tendo um problema na hora de calcular a MÉDIA dos números digitados. Alguém pode me dar uma luz!?

Segue o código fonte que digitei até então:

import java.util.Scanner;

public class Exercicio5 {

public static void main(String[] args) {
	int numero;
	int cont = 0;
	
	Scanner in = new Scanner(System.in);

	do {
		System.out.println("Entre com um número positivo, um numero negativo encerra a digitação:");
		numero = in.nextInt();
		cont++;
	} while (numero >= 0);

	in.close();
	
	int media = numero/cont;
	System.out.println("\nA média dos numero digitados é de: "+ media + "\nForam digitados " + cont + " números." );

}

}

Você precisa acumular a soma…

int numero;
int soma = 0;
int cont = 0;

...

numero = in.nextInt();
if (numero >= 0) {
    soma += numero; //soma = soma + numero
    cont++;
}
...
int media = soma/cont;

Imagino que para a média ser calculada corretamente você só pode incrementar cont quando o número digitado for positivo, assim como a soma…

Perceba que você acaba verificando se o número é positivo 2x, pode também usar while e comparando já na entrada assim…

...
System.out.println("Entre com um número positivo, um numero negativo encerra a digitação:");

while ((numero = in.nextInt()) >= 0) {
    soma += numero;
    cont++;
}
...

Dessa forma você já valida e garante apenas entrada de números positivos!

1 curtida

Muito obrigado pela ajuda, no meu raciocínio a média deveria levar em consideração o numero negativo também, mas realmente faz sentido oque você disse, alterei meu código seguindo sua dica e ficou assim:

public static void main(String[] args) {
int numero;
int cont = 0;
int soma= 0;

	Scanner in = new Scanner(System.in);

		System.out.println("Entre com um número positivo, um numero negativo encerra a digitação:");
	
		
		while ((numero = in.nextInt()) >= 0) {
		    soma += numero;
		    cont++;
		}

	in.close();
	
	int media = soma/cont;
	System.out.println("\nA média dos numero digitados é de: "+ media + "\nForam digitados " + cont + " números." );

}

Agora rodou perfeitamente e a média está sendo calculada corretamente! Muito obrigado e peço que me corrija caso tenha feito algo errado kkk

Mas se o numero negativo é justamente a condição de saída, não faz sentido entrar no cálculo, de qualquer forma, bons estudos!

1 curtida