2017-02-07 6 views
-2
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と、私はこれらのすべて行っている

+0

私はのユークリッドのアルゴリズム –

+0

可能な重複使用GCDのコード作るためになってる[ユークリッドアルゴリズムが動作しないどのように?](http://stackoverflow.com/questions/6005582/how-does-the -euclidean-algorithm-work) –

答えて

0

ここでは、Wikipediaから取得した擬似コードと再帰バージョンを示します。いずれかをJavaで実装できるはずです。私はこれをコメントとして投稿したでしょう。なぜならそれは本当の答えではないからですが、フォーマットはひどいでしょう。

function gcd(a, b) 
    while b ≠ 0 
     t := b; 
     b := a mod b; 
     a := t; 
    return a; 

function gcd_r(a,b) { 
    if (b = 0) { 
     return a; 
    } 
    return gcd_r(b, a mod b); 
} 
+0

ご協力ありがとうございました –

+0

ようこそ。 –

関連する問題