[英]why doesn't this java code work for loneTeen(99, 99)
如果一个数字在 13..19 范围内(包括 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;
}
为什么它给出一个 true 而它应该给出 false
因为你的逻辑是错误的。 &&
并不意味着 XOR (一个或另一个是真的,但不是两个)。 使用以下内容:
return (a>=13 && a <=19) ^ (b>=13 && b<=19);
Java 有一个逻辑异或运算符^
return (a>=13 && a<=19) ^ (b>=13 && b<=19);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.