public class Main
{
public static void main(String[] args)
{
Rational a = new Rational(1,2);
Rational b = new Rational(1,4);
System.out.println(a + " + " + b + " = " + a.add(b));
System.out.println(a + " - " + b + " = " + a.sub(b));
System.out.println(a + " * " + b + " = " + a.mul(b));
System.out.println(a + "/" + b + " = " + a.div(b));
}
}
class Rational
{
private int numerator, denominator;
public Rational (int numer, int denom)
{
if (denom == 0)
denom = 1;
if (denom < 0)
{
numer = numer * -1;
denom = denom * -1;
}
numerator = numer;
denominator = denom;
}
public Rational add (Rational b)
{
int commonDenominator = denominator * b.getDenominator();
int numerator1 = numerator * b.getDenominator();
int numerator2 = b.getNumerator() * denominator;
int sum = numerator1 + numerator2;
return new Rational (sum, commonDenominator);
}
public Rational sub(Rational b) {
int commonDenominator = denominator * b.getDenominator();
int numerator1 = numerator * b.getDenominator();
int numerator2 = b.getNumerator() * denominator;
int difference = numerator1 - numerator2;
return new Rational (difference, commonDenominator);
}
public Rational mul(Rational b) {
int numer = numerator * b.getNumerator();
int denom = denominator * b.getDenominator();
return new Rational (numer, denom);
}
public Rational div(Rational b) {
return mul (b.reciprocal());
}
public int getNumerator()
{
return numerator;
}
public int getDenominator()
{
return denominator;
}
public Rational reciprocal()
{
return new Rational (denominator, numerator);
}
public String toString()
{
String result;
if (numerator == 0)
result = "0";
else
if (denominator == 1)
result = numerator + "";
else
result = numerator + "/" + denominator;
return result;
}
}
それをテストする方法を追加する必要がありますgcdとテスト方法、私はどのようにGCDを自分のコードに実装するのか分かりません。は、私はGCDと、私はこれらのすべて行っている
私はのユークリッドのアルゴリズム –
可能な重複使用GCDのコード作るためになってる[ユークリッドアルゴリズムが動作しないどのように?](http://stackoverflow.com/questions/6005582/how-does-the -euclidean-algorithm-work) –