加算、減算などに関連するいくつかのメソッドを持つRationalクラスを作成しようとしています。コンストラクター内で値をプライベート変数に追加し、GCDを見つけて分数を単純化するようにしたいと考えています。私が遭遇する問題は、if ステートメントにあります。object パラメーター内の数値が負かどうかを確認したいので、if ステートメントを使用して確認します。唯一の問題は、プログラムを実行したときに負の値が返されないことです。つまり、Rational p = new Rational(-24, 48) があり、1/2 しか返されません。
public class TestRational {
public static void main(String... args) {
Rational p = new Rational(-24, 48);
}
public Rational(long a, long b){
numerator = a;
denominator = b;
boolean isNegative = false;
if (numerator*denominator < 0)
isNegative = true;
long gd = gcd(numerator, denominator);
numerator /= gd;
denominator /= gd;
if (isNegative)
numerator = -numerator;;
}
private long gcd(long p, long q){
//checks to see if numerator greater than denominator
if(p<q)
return gcd(q,p);
if(Math.abs(q) == 0)
return p;
long remainder = Math.abs(p)%Math.abs(q);
return gcd(Math.abs(q), Math.abs(remainder));
}
}