好奇if语句行为

时间:2015-03-26 02:31:22

标签: java android

有人想解释这个吗?

public Overlay hitTest(float x, float y) {
    boolean hit = x >= bounds.left && x <= bounds.right
            && y >= bounds.top && y <= bounds.bottom;
    Log.d(DEBUG_TAG, getId() + (hit ? "" : " not ") + " hit");
    if (hit) return this;
    return null;
}

这总是返回null。即使hittrue。 Logcat会准确打印出被击中但未击中的项目对象。真的挠我的头......

我必须做一些非常暗淡的事情,但我无法弄清楚是什么。如果已经有一个话题,我很抱歉,但这是一个令人惊讶的搜索主题。

3 个答案:

答案 0 :(得分:0)

Log.d调用中的某些内容可能是踩到堆栈(也就是粉碎堆栈)并将命中设置为false。我编写了Java代码,它踩到了堆栈,并且有类似的难以调试的问题。

答案 1 :(得分:0)

第二行逻辑不是倒置了吗?

 && y >= bounds.top && y <= bounds.bottom;

在我看来,该行应如下所示

 && y <= bounds.top && y >= bounds.bottom;

答案 2 :(得分:0)

这是Android Studio如何移动调试光标的问题。逻辑是正确的。