Olá.
no código abaixo:
class Média
{
double calculaMédia(int n)
{
if (n>0)
{
final double g = n;
int t = n-1;
System.out.println (+g);
while (t > 0)
{
n= n+t;
t=t-1;
}
return (n / g) ;
}
se eu colocar "final int g = n;" ao invés de colocar "final double g=n;" , o resultado de n/g não vem como esperado. sei que é por que ele pega apenas a parte inteira do resultado, mas pensei que o "double calcula média" que determinaria se o retorno de n/g seria um inteiro ou não, mas a unica coisa que esse double faz é colocar um zero no final do resultado inteiro.
pq isto acontece?
e pq q alterando apenas de "final int" para "final double" o problema se resolve, apesar de n ainda ser inteiro?
obrigado.
Bruno, isso deve ser porque o return não faz nada além de pegar o valor do (n/g) exatamente como calculado dentro do parênteses e devolvê-lo como um double. Assim, se n e g forem int o resultado vai ser truncado para um int já dentro do parênteses, não havendo nada que o return possa fazer a respeito (a não ser colocar um monte de zeros após a vírgula...).
O Daniel está certo, é isso mesmo.
O único detalhe é que quem coloca os zeros depois da vírgula é a própria divisão de double, que retorna um double (a divisão só será inteira se os dois operandos forem inteiros). Tudo o que o return faz é sair do método devolvendo o argumento.
O único detalhe é que quem coloca os zeros depois da vírgula é a própria divisão de double, que retorna um double (a divisão só será inteira se os dois operandos forem inteiros). Tudo o que o return faz é sair do método devolvendo o argumento.
ah sim...
entendi.
Obrigado novamente.
entendi.
Obrigado novamente.