Olá,
Me falaram que a maneira mais fácil de aprender java é programando em java. Então eu resolvi montar um timer. Muito provavelmente deve existir alguma classe pra isso (se me falar eu agradeço =). Mas como era só pra praticar mesmo eu fiz o seguinte código:
public class Darts {
public static void main (String[] args) throws Exception {
int minutos = 1;
long tempoInicial = System.currentTimeMillis();
long tempoFinal = tempoInicial + minutosParaMilisegundos(minutos);
for (long i = tempoInicial; i < tempoFinal; i += 1000) {
esperae(1000);
p(regraDeTres(90,100)); // Aqui retorna o certo (90.0)%
p(regraDeTres(i,tempoFinal)); // Aqui retorna sempre (99.0)%
}
p("=)");
}
private static void esperae(long miliseg) {
long tempoAtual = System.currentTimeMillis();
long tempoDesejado = tempoAtual + miliseg;
while(tempoAtual < tempoDesejado){
tempoAtual = System.currentTimeMillis();
}
}
private static long minutosParaMilisegundos(int minutos) {
return minutos * 60 * 1000;
}
private static double milisegundosParaMinutos(long miliseg) {
if (miliseg <= 0)
return 0;
return (miliseg / 60) / 1000;
}
private static double regraDeTres(long milisegAtual, long milisegFinal) {
return (milisegAtual * 100) / milisegFinal;
}
private static void p(Object print) {
System.out.println(print);
}
}
Eu só queria saber porque na primeira vez o meu método regraDeTres()
retorna o que deveria e na segunda não.