下面是一个小函数,当给出两个数字(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;
}
答案 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;