我在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