Retorno de dois inteiros?[resolvido]

3 respostas
diegohsi
Pessoal, dúvida muito simples com um programa simplório também..
public class MediaNumerosPositivos {
	public static void main(String[] args) {
		int a, menor, cont, soma;
		float media;
		Scanner in = new Scanner(System.in);
		soma = 0;
		cont = 0;
		menor = 0;
		
		System.out.println("Entre com numeros inteiros, um de cada vez e digite ZERO para encerrar.");

		a = in.nextInt();
		while(a != 0) {
			if(a > 0) {
				soma = soma + a;
				cont = cont + 1;
			}
			else if(a < menor) {
				menor = a;
			}
			a = in.nextInt();			
		}
		
		if(cont != 0) {
			media = (soma/cont);
			System.out.println("Média Aritimética dos números positivos: " + (float)(soma/cont));
		}
		else {
			System.out.println("Nenhum número positivo foi lido.");
		}
		if(menor == 0) {
			System.out.println("Nenhum número negativo foi lido.");
		}
		else {
			System.out.println("Menor número negativo lido: " + menor);
		}
	}
}
Ja tentei fazer cast mais não funciona ele ainda mostra na média o número inteiro, nao pega a parte decimal... exe entrando com 5 e 4 retorna como média 4.0 Por que?

3 Respostas

AlexandreGama

Tenta colocar a variavel soma como float também! :wink:

Até mais!

InSeOfKn

Isso acontece porque em java a divisão de dois números inteiros tem como resposta um numero inteiro (corta as casas decimais)

se você quiser que de um numero real tem pelo menos um dos termos ser real

ex:

3/2 = 1
3.0/2 = 1.5
3.0/2.0 = 1.5

mas se você tiver os dois como int (o seu caso) faça assim

float r = ((float)3)/2; // de um cast em um dos termos System.out.print(r);

até mais!

diegohsi

Obrigado Respondido

Criado 21 de outubro de 2010
Ultima resposta 21 de out. de 2010
Respostas 3
Participantes 3