0

我无法让我的方法来加、减和除分数。我已经有了乘法部分,我只是在添加时无法获得正确的输出。请帮我弄清楚我做错了什么我是Java新手,我还在学习。这是我到目前为止所得到的。``

private int numer;
private int denom;

public Fraction(int num, int den) {
    numer = num;
    denom = den;

simplify();
}
public int findGcd(int a, int b) {
    int temp;
    while (b != 0) {
        temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

void simplify() {
    int gcd = findGcd(numer, denom);
    numer /= gcd;
    denom /= gcd;
}
public int getNumer() {
    return numer;
}
public int getDenom() {
    return denom;
}

Fraction add(Fraction x) {
    Fraction answer;

    if (x.getDenom() == denom) {
        answer = new Fraction(x.getNumer() + numer, denom);
    } else {
        denom = this.getDenom() * x.getDenom();
        numer = this.getNumer() * x.getDenom() + x.getNumer()
                * this.getDenom();

        return new Fraction(numer, denom);

    }
    return answer;
}

Fraction subtract(Fraction x) {
    Fraction answer;

    if (x.getDenom() == denom) {
        answer = new Fraction(x.getNumer() - numer, denom);
    } else {
        denom = this.getDenom() * x.getDenom();
        numer = this.getNumer() * x.getDenom() - x.getNumer()
                * this.getDenom();
        answer = new Fraction(numer, denom);
    }
    return answer;
}

Fraction mult(Fraction x) {
    Fraction answer;

    denom = this.getDenom() * x.getDenom();
    numer = this.getNumer() * x.getNumer();
    answer = new Fraction(numer, denom);

    return answer;
}

Fraction div(Fraction x) {
    Fraction answer;

    denom = this.getDenom() * x.getNumer();
    numer = this.getNumer() * x.getDenom();
    answer = new Fraction(numer, denom);
    return answer;
}

当我输入 2 个分数时,它会返回一个分数,但这不是正确的答案。我究竟做错了什么?

更新

如果我使用小分数,例如 1/2 和 3/4,它仍然会给我错误的答案。对于加法,它打印出 7/2、减法 1/2 和除法 3/1。所以我认为这与成为一个int或一个float数字没有任何关系。

4

1 回答 1

2

在您的函数中,您将覆盖 numer 和 denom 的值。改变:

denom = this.getDenom() * x.getDenom(); 
numer = this.getNumer() * x.getDenom() - x.getNumer() 
            * this.getDenom(); 
answer = new Fraction(numer, denom); 

int newdenom = this.getDenom() * x.getDenom(); 
int newnumer = this.getNumer() * x.getDenom() - x.getNumer() 
            * this.getDenom(); 
answer = new Fraction(newnumer, newdenom); 
于 2012-10-22T20:31:44.610 回答