Java 为什么这是真的?

Java 为什么这是真的?,java,if-statement,boolean,Java,If Statement,Boolean,我最近开始自学Java,在玩了CodingBat之后,我只剩下一个非常基本的问题。为什么这是真的 a = 1, b= -1, negative = true public boolean posNeg(int a, int b, boolean negative) { if(!negative && a <= 0 && b >= 0 || a >= 0 && b <= 0){ return true; }e

我最近开始自学Java,在玩了CodingBat之后,我只剩下一个非常基本的问题。为什么这是真的

a = 1, b= -1, negative = true

public boolean posNeg(int a, int b, boolean negative) {
  if(!negative && a <= 0 && b >= 0 || a >= 0 && b <= 0){
    return true;
  }else if(negative && a <= 0 && b <= 0){
    return true;
  }
  return false;
}
在:

如果其任一操作数为true,则将返回true:

!负数&&a=0为假,因为负数为假,b>=0为假,但不计算负数; 在第一个if中a>=0&&b 如果负&&a=0 | | a>=0&&b,因为:

if (!negative && a <= 0 && b >= 0 || a >= 0 && b <= 0) {
//---(false)------(true)----(false)-----(true)----(true)

那么,您是否至少已调试到代码中,以查看它所命中的返回语句?因为a>=0和b提示:查找| |和&&的优先级。您可以做的第一件事是调试。知道到底出了什么问题。那么我想你可以试着用一些这个。例如:“如果!否定的&&a=0 | | a>=0&&b非常感谢你,这很有道理。
(!negative && a <= 0 && b >= 0) || (a >= 0 && b <= 0)
if (!negative && a <= 0 && b >= 0 || a >= 0 && b <= 0) {
//---(false)------(true)----(false)-----(true)----(true)
false && true && false -> false
true && true -> true
(false && true && false) || (true && true) ----> true
     false               ||     true       ----> true