我正在尝试编写一个类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)
希望它有效......