gpt4 book ai didi

java - Java有理式加减法

转载 作者:行者123 更新时间:2023-12-02 06:34:41 27 4
gpt4 key购买 nike

这些是我的加减法方法的当前代码,工作得很好:

public static Rational sub(Rational r1, Rational r2){
int a = r1.getNum();
int b = r1.getDenom();
int c = r2.getNum();
int d = r2.getDenom();

int numForNow = a*d - b*c;
int denomForNow = b*d;

Rational ratNum = new Rational (numForNow, denomForNow);

return ratNum;

public static Rational add(Rational r1, Rational r2){
int numForNow = r1.getNum()*r2.getDenom() + r2.getNum() * r1.getDenom();
int denomForNow = r1.getDenom() * r2.getDenom();

Rational ratNum = new Rational (numForNow, denomForNow);

return ratNum;
}

因此,如果我添加两个有理数,例如 1/3 和 4/6,我将得到 18/18(减少到 1)。然而,我想以不同的方式编写这些,以便程序看到 3 变成 6 并且只会打印出 6/6。



我知道我会用最小公倍数作为分母,这是我理解的。我不明白如何使分子跟随?

此外,我认为需要有一个 if 语句来确定是否使用 LCM 还是继续使用已有的代码。

最佳答案

查看这个答案:simplifying fractions in Java

public static long gcm(long a, long b) {
return b == 0 ? a : gcm(b, a % b); // Not bad for one line of code :)
}

public static String asFraction(long a, long b) {
long gcm = gcm(a, b);
return (a / gcm) + "/" + (b / gcm);
}

或者在您的情况下,您可能需要一个名为 normalize 的函数,该函数获取 Rational 并返回一个使用与以下相同的逻辑标准化的新 Rational上面的 asFraction 函数。另一个 asString 函数将 Rational 打印为字符串。

顺便说一句,除非这是您的特定要求,否则我宁愿将这些方法作为类 Rational 的成员,而不是作为静态方法。

关于java - Java有理式加减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19780096/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com