好的,我有这样的方法,结尾如下:
if(totalDeg > mStartAngle && totalDeg < mSweepAngle){
return true;
}
else {
return false;
}
奇怪的是,在逐步调试时,我停在return true
,在Eclipse上按F6(或F5),然后下一条指令是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 :(得分:0)
所以,正如你所提到的那样 - 这是不可能的。我怀疑这与两件事中的一件有关; (1)看起来的代码就像它在IDE中运行一样,不是正在运行的实际代码 - 即项目构建后生成的dex文件已经脱离与src同步或(2)语句的单行声明混淆了一些东西 - 这会让我感到困惑!像这样写if语句;
boolean withinAcceptedAngle;
if(totalDeg > mStartAngle && totalDeg < mSweepAngle) {
withinAcceptedAngle = true;
}
return withinAcceptedAngle;
...然后执行 Project Clean , Project Build ,然后在返回时使用断点重新运行。请注意,boolean
基元类型初始化为false
,因此您不需要如此声明它。也就是说,在找出出现差异的原因之后,您可以通过编写来缩短代码;
return totalDeg > mStartAngle && totalDeg < mSweepAngle;
在这种情况下,缩短更像是风格的东西。一般来说,我更喜欢速记方式。