Java嵌套ifs

时间:2015-03-03 21:04:26

标签: java if-statement nested

下面是一个小函数,当给出两个数字(a, b)时,如果其中一个数字是青少年数字,则返回true。如果两者都是青少年,则返回false。如果两者都不是青少年,则返回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;
}

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

第一个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;