【问题标题】:Method to Rational - numerator and denominator有理方法 - 分子和分母
【发布时间】:2013-07-15 06:52:12
【问题描述】:

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

【问题讨论】:

    标签: java methods rational-number


    【解决方案1】:

    这个类的作者希望符号由分子携带。分母总是正数。所以确实如果输入是 6/-8,结果将是 -3/4。您的另一个示例也是正确的:-6/-8 构造 3/4。

    【讨论】:

    • 如果输入为 (-4, -8) 则 GCD 为 4,因此 num 创建为 -4/4=-1,den 为 abs(-8)/4 = 8/4= 2 但之后因为 y
    • 非常感谢。我现在明白了。让我感动的部分是 if 语句中的条件是处理分母,但 if 语句的主体是处理分子。那部分让我搞混了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多