在类之间使用变量时,数学公式返回0

时间:2013-11-17 21:01:49

标签: java class math subclass parent

测试这些类时我的最终结果返回零/零,但它应该返回一个实际的答案。 以下是代码的一小部分示例。

父类:

http://pastebin.com/QvxqgrfN

子类:(这就是问题所在 - 顺便说一句,主要部分用于测试结果。之后我会把它拿出来。)

public class HW6Fraction extends Fraction {
   public HW6Fraction(int num, int denom) {
      super();
   }

   public Fraction add(Fraction f) { // Add method
      int num = getNumerator() + f.getNumerator();
      int denom = getDenominator() + f.getDenominator();
      Fraction result = new Fraction(num, denom);
      return result;
   }

   public static void main(String[] args) {
      HW6Fraction F1 = new HW6Fraction(4, 7);
      HW6Fraction F2 = new HW6Fraction(1, 3);

      Fraction F3 = F1.add(F2);
      System.out.println("sum=" + F3.getNumerator() + "/" + F3.getDenominator());
   }
}

父类

public class Fraction {
    private int numerator; //Numerator of fraction
    private int denominator; //Denominator of fraction

    public Fraction(int num, int denom) { //Constructor
        numerator = num;
        denominator = denom;
    }

    public Fraction() { //Constructor w/ no parameters
        new Fraction(0, 1);
    }

    public Fraction(int num) { //Constructor w/ numerator parameter
        numerator = num;
        int denom = 1;
    }

    public int getNumerator() { //getNumerator method
        return numerator;
    }

    public int getDenominator() { //getDenominator method
        return denominator;
    }

    public void setNumerator(int num) { //setNumerator method
        numerator = num;
    }

    public void setDenominator(int denom) { //setDenominator method
        denominator = denom;
    }

    public Fraction add(Fraction f) { //Add method
        int num = numerator * f.getDenominator() + f.getNumerator() *
                  denominator;
        int denom = denominator * f.getDenominator();
        Fraction result = new Fraction(num, denom);
        return result;
    }

     public Fraction subtract(Fraction f) { //Subtract method
        int num = numerator * f.getDenominator() - f.getNumerator() *
                  denominator;
        int denom = denominator * f.getDenominator();
        Fraction result = new Fraction(num, denom);
        return result;
    }

    public Fraction multiply(Fraction f) { //Multiply method
        int num = numerator * f.getNumerator();
        int denom = denominator * f.getDenominator();
        Fraction result = new Fraction(num, denom);
        return result;
    }

    public Fraction divide(Fraction f) { //Divide method
        int num = numerator * f.getDenominator();
        int denom = denominator * f.getNumerator();
        Fraction result = new Fraction(num, denom);
        return result;
    }
}

1 个答案:

答案 0 :(得分:5)

您没有将参数传递给super构造函数:

public HW6Fraction(int num, int denom){
    super();
}

应该是:

public HW6Fraction(int num, int denom){
    super(num, denom);
}

否则父类不会初始化实例变量(它们确实是0)。