作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这些是我的加减法方法的当前代码,工作得很好:
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/
我是一名优秀的程序员,十分优秀!