有理数方法-分子和分母



在这个类中,有一个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;
 }

此类的编写器希望符号由分子携带。分母总是正的。因此,如果输入是6/-8,结果将是-3/4。您的另一个示例也是正确的:-6/-8构造3/4。

相关内容

  • 没有找到相关文章

最新更新