Java android If-else语句

Java android If-else语句,java,android,Java,Android,所以我的问题是,我遇到了一个wierd声音问题,当我使用if语句来确定我是否击中怪物并存活,或者我是否击中怪物并死亡时,它会非常快地重复击中声音。用经典的马里奥逻辑,如果我在上面着陆,我就活着,如果没有,我就死了。在添加两个不同的if语句之前,我没有遇到任何问题。如果你需要更多信息,请告诉我。我想我的问题是如何使用if语句 private void checkGhostCollisions() { int len = ghosts.size(); for (int i = 0;

所以我的问题是,我遇到了一个wierd声音问题,当我使用if语句来确定我是否击中怪物并存活,或者我是否击中怪物并死亡时,它会非常快地重复击中声音。用经典的马里奥逻辑,如果我在上面着陆,我就活着,如果没有,我就死了。在添加两个不同的if语句之前,我没有遇到任何问题。如果你需要更多信息,请告诉我。我想我的问题是如何使用if语句

private void checkGhostCollisions() {
    int len = ghosts.size();
    for (int i = 0; i < len; i++) {
        Ghost ghost = ghosts.get(i);
        if (hero.position.y < ghost.position.y) {
            if (OverlapTester.overlapRectangles(ghost.bounds, hero.bounds))
                hero.hitGhost();
                listener.hit();
        } else {
        if(hero.position.y > ghost.position.y) 
             if (OverlapTester.overlapRectangles(hero.bounds, ghost.bounds)) {
                 hero.hitGhostJump();
                 listener.jump();
            break;
            }
        }
    }
}

我怀疑这就是问题所在:

if (hero.position.y < ghost.position.y) {
    if (OverlapTester.overlapRectangles(ghost.bounds, hero.bounds))
        hero.hitGhost();
        listener.hit();
}
要从中吸取两个教训:

始终正确地缩进代码,如果您感到困惑,请让IDE为您缩进代码。 如果总是在If块中使用大括号,则会减少发生此类情况的机会。 编辑:请注意,每种情况下的内部if条件相同,这意味着您可以将此代码简化为:

if (OverlapTester.overlapRectangles(hero.bounds, ghost.bounds)) {
    if (hero.position.y < ghost.position.y) {
        hero.hitGhost();
        listener.hit();
    } else {
        hero.hitGhostJump();
        listener.jump();
        break;
    }
}

请注意,这会稍微改变Health.Po.y与Hoo.Posiy完全相同的情况。Y-你应该考虑在这种情况下你想发生的事情。

什么是Hooal.Posie= Ghost?Posit?现在它忽略了IfHealth.Posiy.y> Ghost。位置。{hero.hitGhostJump;listener.jump;@user1449547:我现在还不清楚你到底想在每种情况下发生什么……你实际上有4种可能性。你想在每种情况下发生什么?
if (OverlapTester.overlapRectangles(hero.bounds, ghost.bounds)) {
    if (hero.position.y < ghost.position.y) {
        hero.hitGhost();
        listener.hit();
    } else {
        hero.hitGhostJump();
        listener.jump();
        break;
    }
}