当我把它变成负数时,为什么这个值不会改变?

Jam*_*mes 0 java object

我正在尝试编写一个类Rational,它有一些与添加,减去等有关的方法.我想让它在构造函数中,我将值添加到私有变量并找到GCD来查找简化分数.我遇到的问题是我的if语句.我想检查object参数中的数字是否为负数,因此我使用if语句进行检查.唯一的问题是当我运行程序时,它没有给我一个负值,即我有Rational p = new Rational(-24,48)并且它只返回1/2.

public class TestRational {

    public static void main(String... args) {
        Rational p = new Rational(-24, 48);
    }

    public Rational(long a, long b){
        numerator = a;
        denominator = b;
        boolean isNegative = false;
        if (numerator*denominator < 0)
            isNegative = true;
        long gd = gcd(numerator, denominator);
        numerator /= gd;
        denominator /= gd;
        if (isNegative)
            numerator = -numerator;;
    }

    private long gcd(long p, long q){
        //checks to see if numerator greater than denominator
        if(p<q)
            return gcd(q,p);
        if(Math.abs(q) == 0)
            return p;
        long remainder = Math.abs(p)%Math.abs(q);
        return gcd(Math.abs(q), Math.abs(remainder));
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

你不需要这个

if (isNegative)
 numerator = -numerator;;
Run Code Online (Sandbox Code Playgroud)

所以构造函数变成了

public Rational(long a, long b){
 numerator = a;
 denominator = b;
 boolean isNegative = false;
 if (numerator*denominator < 0)
 isNegative = true;
 long gd = gcd(numerator, denominator);
 numerator /= gd;
 denominator /= gd;
}
Run Code Online (Sandbox Code Playgroud)

希望它有效......