2017-10-31 13 views
3

私はJava OOPに関する私の割り当てのためのコードを書いています。私は2つの分数で操作を行う必要がありますが、出力が間違っていて、ほとんどの場合、なぜか分かりません。私は単純化して問題があると考えているので、結果は単純化せずに正しいです 2つの分数0/8と6/14の減算が-3/7になるはずですが、出力は0/1です 助けてくれてありがとう!ここ はコードです:2つの小数点での操作

class Fraction { 


      private int numer, denom; 


      public Fraction(int numerator, int denominator) { 
      numer = numerator; 
      denom = denominator; 
      } 


      private int euclidGcd(int a, int b) { 

      int remainder; 
      while (b > 0) { 
       remainder = a % b; 
       a = b; 
       b = remainder; 
      } 
      return a; 
      } 


      private Fraction simplify() { 

      int gcd = euclidGcd(numer, denom); 
      this.numer = this.numer/gcd; 
      this.denom = this.denom/gcd; 

      Fraction result = new Fraction(numer, denom); 


      return result; 
      } 


      public Fraction add(Fraction another) { 

      int b = this.denom * another.denom; 
      int a = (b/this.denom) * this.numer + (b/another.denom) * another.numer; 
      Fraction result = new Fraction(a, b); 
      result.simplify(); 

      return result; 
      } 


      public Fraction minus(Fraction another) { 
      int b = this.denom * another.denom; 
      int a = (b/this.denom) * this.numer - (b/another.denom) * another.numer; 

      Fraction result = new Fraction(a, b); // stub 
      result.simplify(); 

      return result; 
      } 


      public Fraction times(Fraction another) { 
      int a = this.numer * another.numer; 
      int b = this.denom * another.denom; 

      Fraction result = new Fraction(a, b); // stub 
      result.simplify(); 

      return result; 
      } 

      public Fraction divide(Fraction another) { 
      int a = this.numer * another.denom; 
      int b = this.denom * another.numer; 
      Fraction result = new Fraction(a, b); // stub 

      result.simplify(); 
      return result; 
      } 


      public String toString() { 
      return numer + "/" + denom; 
      } 
+1

最も簡単な方法は、入力を取得し、それを使用して行ごとに行くことです。このためにデバッガを使用することができます。 – Admit

答えて

1

はマイナスに機能を変更してみてください:

public Fraction minus(Fraction another) { 
    return new Fraction(this.numer * another.denom - another.numer * this.denom, this.denom * other.denom).simplify(); 
} 
関連する問題