0

这是我上周发布的一个问题的延续,但我仍然遇到问题。我正在尝试编写一个包含两个私有实例变量 num 和 den 的 Rational 类,它们的数据类型是 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
}
4

1 回答 1

6

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

 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;
 }
于 2013-09-04T02:31:41.883 回答