如果声明通过两种方式

时间:2013-03-05 14:04:13

标签: android

好的,我有这样的方法,结尾如下:

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;
        }
    }

1 个答案:

答案 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;

在这种情况下,缩短更像是风格的东西。一般来说,我更喜欢速记方式。