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

ima*_*txc 0 java math class 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());
   }
}
Run Code Online (Sandbox Code Playgroud)

家长班

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 5

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

public HW6Fraction(int num, int denom){
    super();
}
Run Code Online (Sandbox Code Playgroud)

应该:

public HW6Fraction(int num, int denom){
    super(num, denom);
}
Run Code Online (Sandbox Code Playgroud)

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