我在Java中有一些編碼來計算自上次檢查變量以來虛擬相機中的移動。更具體地說,這個代碼如下:如何比較1個if語句中的多個整數而不重複它?
float movementX, movementY, movementZ;
movementX = (int) (camX - sectorSize[1]);
movementY = (int) (camY - sectorSize[2]);
movementZ = (int) (camZ - sectorSize[3]);
/*
* If the variable is below 0
* then get the absolute value
* of the movement since the
* last camera position.
*/
if (movementX < 0) movementX *= -1;
if (movementY < 0) movementY *= -1;
if (movementZ < 0) movementZ *= -1;
if (movementX > 60 || movementY > 60 || movementZ > 60)
{
//Reset the sector size to allow for new points,
//don't store to save memory (may be changed later).
sectorSize[0] = 0;
}
如果你需要更多的代碼,讓我知道。 sectorSize變量在其[0]值中存儲0-500,前者中的camX爲[1]值,前者中的camY爲[2]值,最後爲前者中的camZ,其值爲[3]。 camX,camY和camZ由其他代碼處理(不顯示)。刪除了所有內容,但代碼爲問題以保持整潔。
此代碼按原樣運行,但每次輸入「if(a_int_value> an_other_value || etc)」有點單調乏味。
如果該代碼被認爲是可信的,那麼movementX將永遠不會成爲60。如果它大於0,它會變成負數,因此永遠不會達到正數。至少可以說這是相當混亂的。你確定你沒有混淆,應該使用<?編碼精確度和SO問題。 – 2012-07-12 22:39:03
這是最明確的做法,是的,它很繁瑣,但很容易理解 – Ghost 2012-07-12 22:39:08
對於我的錢,我只需要'movementX =(int)Math.abs(camX - sectorSize [1]) ;''另外,什麼發生在''//做些什麼..「' – 2012-07-12 22:41:21