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;
下面是一个小函数,当给定两个数字时 (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;