我正在学习用 Java 编写代码,并且正在做一些在线练习,其中没有过多解释答案,所以我只是好奇为什么我的代码似乎与解决方案相似时不正确。练习说——“给定 2 个 int 值,如果一个为负数,一个为正数,则返回 true。除非参数“negative”为 true,否则仅当两者均为负数时才返回 true。”public boolean posNeg(int a, int b, boolean negative) { if (negative && (a < 0 && b < 0)) { return true; }return (a < 0 && b > 0 || a > 0 && b < 0);} // This is my code that yields unwanted resultspublic boolean posNeg(int a, int b, boolean negative) { if (negative) { return (a < 0 && b < 0); } else { return ((a < 0 && b > 0) || (a > 0 && b < 0)); }} // This is the solution code运行时 posNeg(-4, 5, true); 事实证明它是真的,即使它应该是假的。每当一个 int 为负数而另一个为正数且负数为真时,它应该为假,但结果为真。
1 回答
慕容708150
TA贡献1831条经验 获得超4个赞
public boolean posNeg(int a, int b, boolean negative) {
if (negative && (a < 0 && b < 0)) {
return true;
}
return (a < 0 && b > 0 || a > 0 && b < 0);
} // This is my code that yields unwanted results
调用posNeg(-4, 5, true);使第一个条件为 false negative && (a < 0 && b < 0)<===> true && (true && false) <===> false。然后运行跳到if最后并评估最后一个(a < 0 && b > 0) || (a > 0 && b < 0)显然是真的条件。
添加回答
举报
0/150
提交
取消