2015-09-22 2 views
0

У меня возникли проблемы с выяснением, почему строка кода , в которой говорится, что Fraction Interface f = etc ... не работает. Проблема заключается в .denominator и .numerator. Кажется, что я не должен реализовывать методы get. Итак, как я собираюсь получить доступ к знаменателю и числителю aFraction?Интерфейс Java в проекте с участием фракций

Ниже вы также видите методы в интерфейсе. Большое спасибо.

public class Fraction implements FractionInterface, Comparable<Fraction> { 


    private int numerator; 
    private int denominator;  

    public Fraction() 
    { 

      numerator = 0; 
      denominator = 1; 
    } 

    public Fraction(int num, int den) 
    { 

      numerator = num; 
      denominator = den; 
    } 




    public FractionInterface add(FractionInterface aFraction) 
    { 
       // return a new Fraction object 
       // a/b + c/d is (ad + cb)/(bd) 
       // implement this method! 

      // WHY .denominator and .numerator do work ? 

       FractionInterface f = new Fraction((numerator*aFraction.denominator)) 
       + (aFraction.numerator * denominator) , (denominator *aFraction.this.denominator)); 

       return f 
     } 

} 

public interface FractionInterface { 
    /** Task: Sets a fraction to a given value. 

     public void setFraction(int num, int den); 


    public double toDouble(); 


    public FractionInterface add(FractionInterface aFraction); 


    public FractionInterface subtract(FractionInterface aFraction); 


    public FractionInterface multiply(FractionInterface aFraction); 


    public FractionInterface divide(FractionInterface aFraction); 


    public FractionInterface getReciprocal(); 
} 
+0

На крыле попробуйте установить для них различные модификаторы доступности, например, замените их на 'public' – Michael

+0

« Не работает »означает что? Добавьте stacktrace. Вы используете aFraction.this.denominator - измените это на aFraction.denominator. – Fildor

ответ

1

Дайте ваш интерфейс геттер сигнатуру методов для числителя и знаменателя,

public int getNumerator(); 
public int getDenominator(); 

реализовать их в вашем конкретном классе, а затем вызывать эти методы, когда вам нужен числитель или знаменатель.

0

Попробуйте создать метод getNumerator(), который вызывает переменную numerator от this. Поэтому, когда вы вызываете this.getNumerator(), он вызывает переменную numerator, связанную с данной дробью. Это особенно полезно при работе с более чем одной фракцией в методе. Создание метода getNumerator() так просто, как

public int getNumerator(){ 
    return numerator; 
} 

, так как это просто необходимо, чтобы захватить переменные-члены (вам не нужно инициализировать ничего). Сделайте то же самое для знаменателя. Теперь вы можете позвонить как foo.getNumerator().

Смежные вопросы