有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Rational类中相互调用方法

这是我的类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 ?
}

共 (1) 个答案

  1. # 1 楼答案

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

    原因是可变的Rational几乎不可能进行推理:你不能仅仅依靠程序中其他地方没有改变的值,所以你不知道计算的结果会是什么

    invert方法应该返回一个新的rational实例,然后可以将其传递给^{

    return multiply(other.invert());