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 に答える