-3

就目前而言,这是我正在尝试的代码:

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 的值,因此“螺旋”的值将根据该方向从不同的公式计算。

非常感激任何的帮助。

4

5 回答 5

5

您需要实际声明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;
于 2013-10-31T14:38:31.250 回答
2

您可能已经在使用范围之外声明了helix,或者根本没有声明。

double helix = 0;

// The rest of the code follows
于 2013-10-31T14:39:19.563 回答
1

您应该在声明helix之前if声明。当您尝试分配stepAng时,helix超出范围。

于 2013-10-31T14:38:24.373 回答
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
于 2013-10-31T14:39:14.033 回答
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;
于 2013-10-31T14:51:17.543 回答