Rational类编写add和multiply方法

Jes*_* M. 0 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
}
Run Code Online (Sandbox Code Playgroud)

roc*_*boy 6

您定义的构造函数需要2 ints作为参数.

 public Rational(int x, int y) {
      num = BigInteger.valueOf(x);
      den = BigInteger.valueOf(y);
 }
Run Code Online (Sandbox Code Playgroud)

并且编译器抱怨因为你传递了两个BigIntegers.

有一个新的重载构造函数

 public Rational(BigInteger x, BigInteger y) {
      num = x;
      den = y;
 }
Run Code Online (Sandbox Code Playgroud)