Rational类编写add和multiply方法

时间:2013-09-04 02:29:32

标签: java biginteger

这是我上周发布的一个问题的延续,我仍然遇到问题。我正在尝试编写一个Rational类,其中包含两个私有实例变量num和den,其数据类型为BigInteger。 Rational构造函数将两个int作为参数。

我的问题是每当我在Rational类中编写add或multiply方法时Eclipse都会给我一个错误。我不知道为什么它会给我一个错误。据我所知,运算符+, - ,*,/只能用于原始数据类型,因为我的私有实例变量是BigInteger,它们是非重复数据类型,任何加法或乘法都必须通过add或multiply方法完成。

下面的代码给了我一个错误,但我不知道为什么。我不明白代码的概念错误。在方法中使用this.num / this.den / r.num / r.den是错误的原因是什么概念,或者错误是否与语法相关的事情有关? add和multiply方法的错误是相同的,它表示“构造函数Rational(BigInteger,BigInteger)未定义”。

public class Rational{


  public Rational(int x, int y) {
      num = BigInteger.valueOf(x);
      den = BigInteger.valueOf(y);
 }

  public Rational add(Rational r) {
     return new Rational(this.num.multiply(r.den).add(r.num.multiply(this.den)), this.den.multiply(r.den));
}

 public Rational multiply(Rational r) {
      return new Rational(this.num.multiply(r.num), this.den.multiply(r.den));
}


private BigInteger num;
private BigInteger den
}

1 个答案:

答案 0 :(得分:6)

您定义的构造函数需要2 int作为参数。

 public Rational(int x, int y) {
      num = BigInteger.valueOf(x);
      den = BigInteger.valueOf(y);
 }

并且编译器抱怨,因为您传递了两个BigIntegers

有一个新的重载构造函数

 public Rational(BigInteger x, BigInteger y) {
      num = x;
      den = y;
 }