Java 嵌套 if

Java nested ifs

下面是一个小函数,当给定两个数字时 (a, b),returns true 如果其中一个数字是青少年数字。 Returns false 如果两个人都是青少年。 Returns false 如果两个人都不是青少年。我没有通过这些测试用例,但我不明白为什么。帮助? (13, 99)(14, 20)(16, 9)

public boolean loneTeen(int a, int b) 
{
    if(a<=19 && a>=13) 
    {
        if(b<=19 && b>=13)
        {
            return false;
        } 
    }
    else if(a<=19 && a>=13)
    {
        return true;
    }
    else if(b<=19 && b>=13)
    {
        return true;
    }
    return false;
}

使用一个小的辅助方法可以让你的生活更轻松(并且代码更具可读性!):

private boolean isTeen(int a) {
    return a > 12 && a < 20;
}

public boolean loneTeen(int a, int b) {
    if(isTeen(a) && isTeen(b) ||
            !isTeen(a) && !isTeen(b)) {
        return false;        
    }        
    return true;
}

所有三个测试用例都将首先进入if分支,它们不会匹配内部条件,并且由于它们已经匹配了第一个分支,因此不会匹配任何其他if。所以,他们都会 return false 这是错误的。

First else 不会被执行,因为你在 if 和 else.try 上都设置了相同的条件

if( a>=13 && a<=19 && b>=13 && b<=19){return false;}
else if(a>=13 && a<= 19){return true;}
else if(b<=19 && b>=13){return true;}
else return false;