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:
int tempo = (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?
Veja se assim funciona:
float 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);
[quote=Jemerson]Veja se assim funciona:
[code]
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);
[/code][/quote]
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;
}
Se o problema é só por conta dos minutos, tente colocar uma condicional para fazer essa verificação.
EX:
float distancia=41.2f;
float velMedia=1.1f;
float tempo = (float) ((distancia * 100) / (velMedia / 3.6)); // distancia e velMedia sao do tipo float
float minutos=(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.