这是我上周发布的一个问题的延续,我仍然遇到问题。我正在尝试编写一个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
}
答案 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;
}