2013-10-31 70 views
-2

因爲它的立場,這是我想要的代碼:但是它不工作系列的IF語句來確定變量,JAVA

if(gear.isLeftHand()) 
    helix = (gear.getParentPair().beta()); 
else if (gear.isRightHand()) 
    helix = Math.PI - (gear.getParentPair().beta()); 
else if (gear.isSpur()) 
    helix = 0; 
else 
    helix = 0; 

double stepAng = (thickness /radius) * helix; 

,這是因爲「螺旋不能被解析爲一個變量」

我想根據初始角度是左手還是右手來獲取stepAng的值,因此'helix'的值將根據這個方向從不同的公式計算出來。

任何幫助將不勝感激。

+2

** 1)**請不要縮進這樣的。 ** 2)**你在哪裏聲明瞭這個「helix」? – Maroun

+1

您需要**在某個點聲明變量。 Java不是Python。 –

+0

你得到什麼錯誤 –

回答

1

您應該在if聲明之前聲明helix。當您嘗試分配stepAng時,helix超出範圍。

6

實際上你需要申報helix,你可以用你的兩個表達式做掉,如果你把它初始化爲0(我假設這是一個double給你做參考Math.PI):

double helix = 0; 
if (gear.isLeftHand()) { 
    helix = (gear.getParentPair().beta()); 
} else if (gear.isRightHand()) { 
    helix = Math.PI - (gear.getParentPair().beta()); 
} 

double stepAng = (thickness/radius) * helix; 
+1

打敗我吧。 @amie,請注意使用這裏添加的很好的縮進和大括號。它使代碼更加可讀! – Chill

1

如果你得到的編譯錯誤是「無法解析變量XXX」(在你的情況下是螺旋),那麼你需要在所有地方都可以訪問的範圍內定義它,這裏可能會啓動方法或類實例變量,具體取決於你的需要。

第一種方式:

public double getArea(){ 
    double helix=0.0; 
    if(cond){ 
     helix=//some code 
    }else{ 
     helix=//some code 
    } 
     // some code with helix 
    } 

方式二:

public class AreaCalculator(){ 
    //highest scope based on requirement. 
    private double helix; 

    public double getArea(){ 
     double helix=0.0; 
     if(cond){ 
     helix=//some code 
     }else{ 
     helix=//some code 
     } 
     // some code with helix 
    }//method 
}//class 
2

你可能已經宣佈螺旋使用範圍之外,或沒有申報的。

double helix = 0; 

// The rest of the code follows 
0
,如果你想要做這樣的

else if (gear.isSpur()) 
    helix = 0; 
else 
    helix = 0 

,你可以這樣做:

double helix = 0; 
if (gear.isLeftHand()) { 
    helix = (gear.getParentPair().beta()); 
} else if (gear.isRightHand()) { 
    helix = Math.PI - (gear.getParentPair().beta()); 
} 


double stepAng = (thickness/radius) * helix;