测试这些类时我的最终结果返回零/零,但它应该返回一个实际的答案。 以下是代码的一小部分示例。
父类:
子类:(这就是问题所在 - 顺便说一句,主要部分用于测试结果。之后我会把它拿出来。)
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;
}
}
答案 0 :(得分:5)
您没有将参数传递给super
构造函数:
public HW6Fraction(int num, int denom){
super();
}
应该是:
public HW6Fraction(int num, int denom){
super(num, denom);
}
否则父类不会初始化实例变量(它们确实是0
)。