Bom dia pessoal,
é o seguinte, quando eu usava a linguagem C eu conseguia fazer um cálculo bem simples de tempo da
seguinte forma; eu pedia para o usuário digita a distância em km e depois a velocidade média em km/h,
em seguida eu conseguia fazer com que um inteiro recebesse a divisão deles segundo o cálculo simples
de tempo, assim:
inttempo=(distancia*100)/(velMedia/3.6);// distancia e velMedia sao do tipo float
Assim eu conseguia escrever o tempo em horas, minutos e segundos dessa forma:
printf(" %d horas %d minutos e %d segundos.\n\n",tempo/60/60,tempo/60%60,tempo%60%60%60);
Embora não seja a melhor forma de retornar isso em C, eu sempre consegui fazer funcionar, mas em java não consigo.
Alguém conhece algum jeito de fazer esse tipo de cálculos em java?
floatdistancia=112;floatvelMedia=5;inttempo=(int)((distancia*100)/(velMedia/3.6));// distancia e velMedia sao do tipo float System.out.printf(" %d horas %d minutos e %d segundos.\n\n",tempo/60/60,tempo/60%60,tempo%60%60%60);
W
Wagner_Junio
Jemerson:
Veja se assim funciona:
int distancia=112;
float velMedia=5;
int tempo = (int) ((distancia * 100) / (velMedia / 3.6)); // distancia e velMedia sao do tipo float
System.out.printf(" %d horas %d minutos e %d segundos.\n\n",tempo / 60 / 60,tempo / 60 % 60,tempo % 60 % 60 % 60);
Eu cheguei a fazer assim no netbeans, mas, quando converto pra int ele não considera a primeira casa antes da vírgula, por exemplo:
se o resultado dá 0.4, eu queria escrever só o 4 que está depois da vírgula, e não estou conseguindo:
obs.: este cálculo é só dos minutos.
public int getCalcTempoGasto(float distancia,float velMedia)
{
tempo = (int)((distancia * 100) / (velMedia/3.6));
return (tempo/60)%60;
}
Jemerson
Se o problema é só por conta dos minutos, tente colocar uma condicional para fazer essa verificação.
EX:
floatdistancia=41.2f;floatvelMedia=1.1f;floattempo=(float)((distancia*100)/(velMedia/3.6));// distancia e velMedia sao do tipo float floatminutos=(tempo/60%60);// float minutos=0.4f; if(minutos>0&&minutos<1){minutos+=minutos*10;}System.out.printf(" %d horas %d minutos e %d segundos.\n\n",(int)(tempo/60/60),(int)minutos,(int)(tempo%60%60%60));}
Não consegui reproduzir esse fato, mas criei adicionei 0.4 na variável que está comentada na linha 05 e parece que para esse caso resolveu.Só não
sei informar se para os demais casos isso irá funcionar.