このクラスには、2 つの数値をパラメーターとして取り、それらを分数に変換する Rational コンストラクターがあります。プライベート メソッド gcd を使用して、分数を可能な限り低い項に減らします。
Rational コンストラクターが dem の計算時に Math.abs(y) を使用する理由と、if 条件の背後にある目的が理解できない部分。したがって、if 条件を読み取る場合、たとえば -4 のように分母が 0 未満の場合、den = -4 または num が正の 4 に変化するかどうかを示すメソッドです。たとえば、Rational パラメータに (-4, -8) がある場合、Rational のコンストラクタ値は 1/2 または -1/ -2 になりますか?
public class Rational {
public Rational (int x, int y){
int g = gcd(Math.abs(x), Math.abs(y));
num = x / g;
dem = Math.abs(y) / g;
if ( y < 0 ) num = -num;
}
private int gcd(int x, int y){
int r = x % y;
while (r != 0){
x = y;
y = r;
r = x % y;
}
return y;
}
private int num;
private int dem;
}