2012-02-29 60 views
0

我已經做了在這個問題上搜索的時間和不能拿出一個解決方案: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是私人整數。我究竟做錯了什麼?我應該發佈整個程序嗎?這是一個家庭作業問題,所以必須使用這種類型的方法來完成。

+1

聽起來像功課 – 2012-02-29 05:34:01

+0

operand.den似乎不是int型,所以你不能添加它們。 你應該發佈你的FractionInterface類/接口 – 2012-02-29 05:35:40

+0

你不能像這樣引用類的私有成員。 – 2012-02-29 05:36:07

回答

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); 
} 
+0

謝謝!時間浪費在一些如此簡單的哈哈上。我已經有了Get方法,我只是沒有意識到我可以使用它。謝謝! – Boris4ka 2012-02-29 05:49:15

+0

不要忘記接受答案:) – 2012-02-29 05:54:12

0

我相信爲了讓您能夠訪問的操作參數的書房和NUM成員,他們必須聲明爲public或protected。

0

我假設FractionInterface是一個接口operand的實際等級未知—特別是,它可能不包含會員字段numden。 (您不能承擔它的Fraction一個實例。)

接口FractionInterface應該定義存取方法檢索分子和分母的值。使用這些從operand獲取所需的值。