我正在学习用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 results
public 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为负数而另一个int为正数且负数为true时,则该值应为假,但得出的结果为真。
答案 0 :(得分:0)
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);
会使第一个条件为假negative && (a < 0 && b < 0)
<===> true &&(true && false)<===> false。
然后,运行跳转到该if
的末尾,并评估最后一个条件(a < 0 && b > 0) || (a > 0 && b < 0)
,这显然是正确的。