返回错误值的简单 java 程序

simple java program returning incorrect value

你好,我正在复习 Java 练习。我有这个非常简单的程序: 有两个 int 值,以及一个布尔变量。

i) 如果这些值之一为负,一个为正,程序将 return 为真。

ii) 但是,如果 boolean 变量为真,则程序只能 return 如果两个 int 值都是负数则为真。

我已经用一堆 int 值对此进行了测试,但是一旦我为该方法提供值 (1, -1) 并将布尔值设置为 true,程序似乎就会中断。任何帮助或解释将不胜感激。

   public static void main(String[] args) {
        System.out.println(posNeg(1,-1,true));
    }
    
    public static String posNeg(int a, int b, boolean negative){
        if(negative && (a<0 && b<0)){
            return "true";
        }else if(!negative && (a<0 && b>0) || (a>0 && b<0)){
            return "true";
        }
        return "false";
    }

您的代码因 && .

而中断

||条件括在方括号中:

public static void main(String[] args) {
    System.out.println(posNeg(1,-1,true));
}

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

&& 的优先级高于 || , 所以在 else if 条件下即 !negative && (a<0 && b>0) || (a>0 && b<0) 首先对这个条件求值 !negative && (a<0 && b>0) 然后用 res || 求值结果(a>0 && b<0).

在你的情况下,我猜你想先评估 ||然后 && ,所以只需在 !negative && ( (a<0 && b>0) || (a>0 && b<0)) 中放一个这样的括号,以便首先评估括号内的条件,然后计算结果用 &&

评估
public class Main
{
     public static void main(String[] args) {
        System.out.println(posNeg(1,-1,true));
    }
    
    public static String posNeg(int a, int b, boolean negative){
        if(negative && (a<0 && b<0)){
            return "true";
        }else if(!negative && ((a<0 && b>0) || (a>0 && b<0))){
            return "true";
        }
        return "false";
    }
}

public static void main(String[] args) {
    System.out.println(posNeg(1,-1,false));
}

public boolean posNeg(int a, int b, boolean negative) { 如果(否定) return (a < 0 && b < 0); 别的 return ((a < 0 && b > 0) || (a > 0 && b < 0)); }