在这个类中有一个 Rational 构造函数,它接受两个数字作为参数并将它们转换为分数。它使用私有方法 gcd 将分数减少为可能的最低项。
我不明白为什么 Rational 构造函数在计算 dem 时采用 Math.abs(y) 的部分以及 if 条件背后的目的。因此,在读取 if 条件时,如果分母小于 0(例如 -4),则 den = -4 或 num 会变为正 4 吗?例如,如果 Rational 参数有 (-4, -8),那么 Rational 的构造函数值是 1/2 还是 -1/ -2?
public class Rational {
public Rational (int x, int y){
int g = gcd(Math.abs(x), Math.abs(y));
num = x / g;
dem = Math.abs(y) / g;
if ( y < 0 ) num = -num;
}
private int gcd(int x, int y){
int r = x % y;
while (r != 0){
x = y;
y = r;
r = x % y;
}
return y;
}
private int num;
private int dem;
}