我遇到了無法評估的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