gpt4 book ai didi

java - Rational 类中相互调用方法

转载 作者:行者123 更新时间:2023-12-02 00:07:13 26 4
gpt4 key购买 nike

这是我的 Rational 类的一个示例,我构建它并在每个方法中进行数学和算法

public class Rational {

private int Numerator;
private int Denominator;

public Rational() {
Numerator = 1;
Denominator = 1;
}

public Rational(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException(" Cannot divide by zero ");
}
this.Numerator = a;
this.Denominator = b;
}

我的问题是我不想每次都重复这些方法,就像你知道除法运算是乘法运算与反转另一个有理数一样,但这里的问题是我不知道如何调用乘法方法在这种情况下除:

public Rational multiply(Rational other) {
int numerator = this.Numerator * other.Numerator;
int denominator = this.Denominator * other.Denominator;
return new Rational(numerator, denominator);
}

public Rational divide(Rational other) {
other.invert();
return null;// where to call the multiply method ?
}

最佳答案

Rational 几乎肯定应该是不可变的:这两个字段应该是最终的。

原因是可变的Rational使得它几乎不可能推理:你根本不能依赖程序中其他地方没有改变的值,所以你不知道什么计算结果为。

invert 方法应该返回有理数的新实例,然后您可以将其传递给 multiply:

return multiply(other.invert());

关于java - Rational 类中相互调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58149115/

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