在Android / Java中强制算术运算中的优先级

时间:2014-06-11 12:36:21

标签: java android math canvas operator-precedence

我尝试将大小为10像素的形状定位为宽度为72像素的方形位图。

在以下代码中:

fShapeLocation是指形状的最终位置

fBitmapWidth是指位图的X宽度

cTopLeft.getX()是位图的左上角

我添加的对象应该在位图的顶部X上正好显示2/3 + 1/6(正好在形状的最后三分之一的正中心之上)。

像这样的东西(^^^是我想要的地方,[]与位图方块的四个角有关):

               ^^^
   [                ]


   [                ]


    fShapeLocation=this.cTopLeft.getX()+((this.fBitmapWidth/3)*2);
    fShapeLocation+=(fBitmapWidth/6)-5;

注意我试图放入多少括号以强制算术优先级。

实际上,形状出现在位图的中间。我有一种令人讨厌的怀疑,这是由java评估算术表达式的顺序引起的。我宁愿将我的代码缩短到一行,让它将形状放在正确的位置 - 任何人都可以帮助我吗? (我很抱歉我从未擅长数学)

1 个答案:

答案 0 :(得分:0)

当你的意思是* 5时你写了-5吗?这符合你的文字。如果是这样,你的表达归结为

fShapeLocation = c.topLeft.getX()+fBitmapWidth*5/6;

除方法调用外,根本没有括号。无需更改评估顺序。