Retorno de dois inteiros?[resolvido]

Pessoal, dúvida muito simples com um programa simplório também…

[code]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);
	}
}

}[/code]
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?

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

Até mais!

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!

Obrigado Respondido