Java分数加法

时间:2012-02-29 05:32:35

标签: java

我已经花了几个小时搜索这个问题而无法找到解决方案:

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是私有的。我究竟做错了什么?我应该发布整个程序吗?这是一个家庭作业问题,所以必须使用这种方法来完成。

3 个答案:

答案 0 :(得分:3)

您需要使用公共访问者方法访问私有numden

如果相应的访问者方法是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类是未知的 - 特别是,它甚至可能没有成员字段numden。 (您不能认为它是Fraction的实例。)

接口FractionInterface应定义访问器方法以检索分子和分母的值。使用它们从operand获取所需的值。