下面是一个小函数,当给定两个数字(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;
}发布于 2015-03-03 21:09:21
所有三个测试用例都将进入第一个if分支,它们将不匹配内部条件,并且,由于它们已经匹配了第一个分支,所以它们都将不匹配任何其他的,因此,它们都将返回错误的false。
发布于 2015-03-03 21:07:51
使用一个小的辅助方法可以使您的生活变得更容易(并且代码更易读!):
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;
}发布于 2015-03-03 21:13:02
首先,当您对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;https://stackoverflow.com/questions/28841855
复制相似问题