2013-03-05 41 views
-1

好吧,我已经有了这个方法,它结束这样的:if语句要通过两种方式

if(totalDeg > mStartAngle && totalDeg < mSweepAngle){ 
      return true; 
     } 
     else { 
      return false; 
     } 

奇怪的是,在调试一步一步的时候,我停在return true,按F6(或F5)在Eclipse上,那么下一条指令是return false !!!

这怎么可能?

PD。这是我调用这个函数:

if(d.isInArea(x, y)){ 
      //d.onTap(); 
      Toast.makeText(mContext, "Directory " + d.getName() + " was tapped!", Toast.LENGTH_SHORT).show(); 
} 

,这是isInArea方法:

public boolean isInArea(float x, float y){ 
     int deltaX = (int) (x - mRectShape.centerX()); 
     int deltaY = (int) (y - mRectShape.centerY()); 

     if (Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)) > mRectShape.width()/2) { 
      return false; 
     } 

     double offset = 0; 

     //now calculate angle 
     double angle = Math.atan2(deltaY, deltaX); 
     double total = angle; 
     double totalDeg = Math.toDegrees(total); 
     Log.d(LOG_TAG, "angle :" + totalDeg); 

     if(totalDeg > mStartAngle && totalDeg < mSweepAngle){ 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 
+0

很好,实际上是回到其价值?正确的? – 2013-03-05 14:05:59

+0

不,应该返回true(实际上,它只是进入返回true,如果满足条件),但它返回false – 2013-03-05 14:06:42

+0

显示调用这个方法? – Geobits 2013-03-05 14:06:53

回答

0

因此,当你提到TO-这是不可能的。我怀疑这与两件事中的一件有关。 (1)代码看起来像它在IDE中运行是不实际代码正在运行 - 即一个项目生成后生成的DEX文件已经得到了与SRC或(2)单同步声明的在线声明混淆了一些东西 - 这会让我困惑!像这样写if语句;

boolean withinAcceptedAngle; 
if(totalDeg > mStartAngle && totalDeg < mSweepAngle) { 
    withinAcceptedAngle = true; 
} 
return withinAcceptedAngle; 

...然后做一个项目清洁项目建设,然后与返回的断点重新运行。请注意0​​原始类型初始化为false,因此您不需要声明它。也就是说,在找出差异的原因后,您可以通过书写缩短代码;

return totalDeg > mStartAngle && totalDeg < mSweepAngle; 

在这种情况下,我认为缩短更多的是风格的东西。尽管我更喜欢速记方法。

+0

这不知怎的解决了它。虽然它应该与我的原始代码一起工作...... – 2013-03-05 14:37:43