我已经花了几个小时搜索这个问题而无法找到解决方案:
public FractionInterface add(FractionInterface operand) {
int numerator = num*operand.den + operand.num*den;
int denominator = den*operand.den;
return new Fraction(numerator, denominator);
}
到目前为止我发现的每个例子都是以这种方式完成的,但是当我尝试这样做时,它不会编译并为每个操作数提供三次错误。*:
error: cannot find symbol
int numerator = num*operand.den + operand.num*den;
^
symbol: variable den
location: variable operand of type FractionInterface
num和den是私有的。我究竟做错了什么?我应该发布整个程序吗?这是一个家庭作业问题,所以必须使用这种方法来完成。
答案 0 :(得分:3)
您需要使用公共访问者方法访问私有num
和den
。
如果相应的访问者方法是getNum()
和getDen()
public FractionInterface add(FractionInterface operand) {
int numerator = num*operand.getDen() + operand.getNum()*den;
int denominator = den*operand.getDen();
return new Fraction(numerator, denominator);
}
答案 1 :(得分:0)
我相信为了能够访问操作数参数的den和num成员,它们必须被声明为public或protected。
答案 2 :(得分:0)
我认为FractionInterface
是接口。实际的operand
类是未知的 - 特别是,它甚至可能没有成员字段num
和den
。 (您不能认为它是Fraction
的实例。)
接口FractionInterface
应定义访问器方法以检索分子和分母的值。使用它们从operand
获取所需的值。