用条件检查两个变量符号
Check two variables signum with condition
给定 2 个整数和条件 negative
:
- return
true
如果一个小于零,一个大于零并且 negative
是 false
.
- return
true
如果两者都小于零并且 negative
是 true
.
- return
false
否则。
测试:
posNeg(1, -1, false) expected: true
posNeg(-1, 1, false) expected: true
posNeg(-4, -5, true) expected: true
posNeg(-4, 5, true) expected: false
我的解决方案是:
public boolean posNeg(int a, int b, boolean negative) {
return ((((a>0) && (b<0)) || ((a<0) && (b>0))) || (((a<0) && (b<0)) &&(negative)));
}
但是这个案例是错误的
posNeg(-4, 5, true) expected: false | actual: true
我反复检查了几次,我觉得我的解决方案是对的。
请让我知道我哪里错了。为什么这个解决方案不正确?
(a<0) && (b>0)
对于 (-4, 5) 是 true
。
(X || true) || Y = true
像这样重构条件:
return negative && a < 0 && b < 0
|| !negative && (a < 0 && b > 0 || a > 0 && b < 0);
或
if (negative) return a < 0 && b < 0;
else return a < 0 && b > 0 || a > 0 && b < 0;
或
return negative
? a < 0 && b < 0
: a < 0 && b > 0 || a > 0 && b < 0;
首先你检查是否
(a>0) && (b<0) || (a<0) && (b>0)
不看 negative
是 true
还是 false
。条件从左到右检查。
这使得两者
posNeg(-4, 5, true)
posNeg(-4, 5, false)
评估为 true
。
你有3个案例,彼此有或有关系。由于其中一种情况是 "a is negative and b is positive",它将 return 为真。
如果否定为假,您需要确保只有前两种情况 return 为真。
例如
((a>0) && (b<0))
写
(a > 0 && b < 0 && !negative)
这是简短的解决方案。
public boolean posNeg(int a, int b, boolean negative) {
return negative == a > 0 == b > 0;
}
给定 2 个整数和条件 negative
:
- return
true
如果一个小于零,一个大于零并且negative
是false
. - return
true
如果两者都小于零并且negative
是true
. - return
false
否则。
测试:
posNeg(1, -1, false) expected: true
posNeg(-1, 1, false) expected: true
posNeg(-4, -5, true) expected: true
posNeg(-4, 5, true) expected: false
我的解决方案是:
public boolean posNeg(int a, int b, boolean negative) {
return ((((a>0) && (b<0)) || ((a<0) && (b>0))) || (((a<0) && (b<0)) &&(negative)));
}
但是这个案例是错误的
posNeg(-4, 5, true) expected: false | actual: true
我反复检查了几次,我觉得我的解决方案是对的。
请让我知道我哪里错了。为什么这个解决方案不正确?
(a<0) && (b>0)
对于 (-4, 5) 是 true
。
(X || true) || Y = true
像这样重构条件:
return negative && a < 0 && b < 0
|| !negative && (a < 0 && b > 0 || a > 0 && b < 0);
或
if (negative) return a < 0 && b < 0;
else return a < 0 && b > 0 || a > 0 && b < 0;
或
return negative
? a < 0 && b < 0
: a < 0 && b > 0 || a > 0 && b < 0;
首先你检查是否
(a>0) && (b<0) || (a<0) && (b>0)
不看 negative
是 true
还是 false
。条件从左到右检查。
这使得两者
posNeg(-4, 5, true)
posNeg(-4, 5, false)
评估为 true
。
你有3个案例,彼此有或有关系。由于其中一种情况是 "a is negative and b is positive",它将 return 为真。
如果否定为假,您需要确保只有前两种情况 return 为真。
例如
((a>0) && (b<0))
写
(a > 0 && b < 0 && !negative)
这是简短的解决方案。
public boolean posNeg(int a, int b, boolean negative) {
return negative == a > 0 == b > 0;
}