我正在尝试编写一个 Rational 类,它有一些与加法、减法等相关的方法。我想在构造函数中将值添加到私有变量并找到 GCD 以找到简化分数。我遇到的问题是我的 if 语句。我想检查对象参数中的数字是否为负,所以我使用 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));
}
}