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

时间:2015-06-18 14:31:10

标签: 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;
}

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

2 个答案:

答案 0 :(得分:5)

因为你的逻辑错了。 &&并不代表XOR(一个或另一个是真的,但不是两个)。使用以下内容:

return (a>=13 && a <=19) ^ (b>=13 && b<=19);

答案 1 :(得分:0)

Java有一个逻辑XOR 运算符^

return (a>=13 && a<=19) ^ (b>=13 && b<=19);