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

我正在学习用 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 为负数而另一个为正数且负数为真时,它应该为假,但结果为真。


慕仙森
浏览 147回答 1
1回答

慕容708150

public boolean posNeg(int a, int b, boolean negative) {&nbsp; if (negative && (a < 0 && b < 0)) {&nbsp; &nbsp; return true;&nbsp; }&nbsp; 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)显然是真的条件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java