2014-06-11 39 views
-2

我正在試圖定位一個10像素的形狀相對於寬度爲72像素的方形位圖。在Android/Java中的算術運算中強制優先

在以下代碼:

fShapeLocation指形狀

fBitmapWidth的最終位置是指該位圖

cTopLeft.getX(的X寬度)的左上角位圖

我添加的對象應該在位圖的頂部X(恰好在形狀的最後三分之一的正中間)上正好顯示2/3 + 1/6。

像這樣的東西(^^^是我想要的,和[]涉及位正方形的四個角):

   ^^^ 
    [    ] 


    [    ] 


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

注意很多括號我如何試圖把以強制算術優先。

實際上,形狀出現在位圖的中間。我懷疑這是由java評估算術表達式的順序造成的。我寧願將我的代碼縮短到只有一行,並將其放在正確的位置 - 任何人都可以幫我解決問題嗎? (我很抱歉,我從未很擅長數學)

+1

Err,2/3加1/6是5/6。這些括號不會改變評估順序。你的實際問題仍不清楚。 – EJP

+0

感謝您的回覆。我會嘗試澄清 - 我的問題是使用括號是否會「強制」java按照我想要的順序評估表達式。例如:3 + 4-2 - >(3 + 4)-2 vs 3+(4-2) - 圓括號是否強制編譯器的評估順序? – user3149327

+0

當然他們會這樣做:這就是他們的目的;但是您在發佈的代碼中添加的內容不會更改您發佈的代碼中的訂單。你的問題在別處。 – EJP

回答

0

當你的意思是* 5時,你寫了-5嗎?這將同意你的文字。如果是這樣,你的表達歸結爲

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

除了方法調用,根本沒有括號。無需更改評估訂單。