为了账号安全,请及时绑定邮箱和手机立即绑定

这些代码行之间有什么区别?

这些代码行之间有什么区别?

慕仙森 2022-05-25 16:31:15
我正在学习用 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)显然是真的条件。


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信