为什么这个java代码不适用于loneTeen(99,99)

Tan*_*nvi -4 java

如果它在13..19(含)范围内,我们会说一个数字是"青少年".给定2个int值,如果一个或另一个是青少年,则返回true,但不是两者都返回.

loneTeen(13, 99) ? true
loneTeen(21, 19) ? true
loneTeen(13, 13) ? false

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

为什么它会给出一个真实的,而它应该给出错误

ζ--*_*ζ-- 5

因为你的逻辑错了.&&并不意味着异或(一个或另一个是真的,但不是两个).使用以下内容:

return (a>=13 && a <=19) ^ (b>=13 && b<=19);
Run Code Online (Sandbox Code Playgroud)