我遇到了无法评估的while循环中的条件问题。我正试图每1/60秒执行一次操作员一次。以下代码每1/60秒不打印出“完成”,每隔几秒只打印一次。我检查过德尔塔时间是否正常(在我的电脑上大概是2E-6到5E-6)。所以,我不确定为什么if语句中的代码不会每1/60秒发生一次。while循环中的Java条件无法评估
float p_dt = 1.f/60.f;
float u_time = 0.f;
while (true)
{
float t_ft = serverClock.restart().asSeconds(); //Gets the delta time
u_time += t_ft;
if(u_time > p_dt)
{
System.out.println("Done");
u_time = 0;
}
}
编辑: 在I/O速度方面,我不认为这是问题。 “完成”只是每3-5秒打印一次,所以看起来这里有更大的问题。另外,在我的实际程序中还有一些其他的事情正在评估条件。最后,如果我在条件之前添加打印语句以跟踪u_time
,则会打印出每秒60个“完成”。我不认为这是一个I/O问题,因为在条件中调用的函数只是每3-5秒调用一次,就像print语句一样。
此外,serverClock是一个JSFML时钟对象,一个OpenGL包装与其他系统工具。
是否使用实时版本(t_ft,u_time和p_dt不是大多数自地名释义的名字,是他们。)的Java? –
这可能与您正在执行的I/O有关。你有没有得到正确的打印数量或几乎没有? –
不太可能是你的问题,但u_time = 0行应该是:“u_time - = p_dt”,否则你每次迭代都会失去小数秒,这将导致整体输出丢失(但不是你说的'再见)。似乎问题必须在serverClock行,但没有任何代码在这里可用,不知道可以提供更多的帮助。 – user1676075