理性分子和分母的方法

时间:2013-07-16 21:46:45

标签: java methods rational-number

在这个类中有一个Rational构造函数,它将两个数字作为参数并将它们转换为一个分数。它使用私有方法gcd将分数减少到尽可能低的条件。

我不明白为什么Rational构造函数在计算dem和if条件背后的目的时采用Math.abs(y)的部分。因此,当读取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;
 }

1 个答案:

答案 0 :(得分:3)

本课程的作者希望符号由分子携带。分母总是积极的。所以如果输入是6 / -8,结果将是-3/4。你的另一个例子也是正确的:-6 / -8 construct 3/4。