类方法的问题和测试这些方法?

时间:2017-10-18 20:20:24

标签: java class methods

我正在学习如何编码,我遇到了类方法和测试这些方法的问题。这是问题所在:

在本实验中,我们将创建一个Fraction类。该类用于表示两个整数的比率。 FractionDriver类的主要方法将包含测试Fraction类的代码。我建议您逐步测试Fraction课程。

您的Fraction类应该有两个私有整数实例变量,分子和分母。最初,分子的值应为0,分母的值应为1.

编写两个mutator方法setNumerator()setDenominator(),允许用户将分子和分母设置为整数值。您的代码不应允许分母设置为0.如果用户尝试将分母设置为0,则不应更改该值。

此外,还包括一个名为getValue()的方法,该方法将分子的值除以分母作为double。

添加toString()方法,该方法以分子/分母的形式返回分数的String表示,例如5/3。

最后,添加一个equals方法,确定两个Fraction类型的对象是否相等。请注意,3/5和6/10应该被视为相等。

这是我的Fraction类的代码:

public class Fraction {

private int numerator = 0;
private int denominator = 1;
private double divide;
//setting numerator and denominator
public void setNumerator(int numerator) {
    this.numerator = numerator;
}
public void setDenominator(int denominator) {
    if (denominator == 0) {
        return;
    }
    this.denominator = denominator;
}

//returning value of the numerator divided by a denominator as a double
public void getValue() {
    divide = numerator / denominator;
    this.divide = divide;
    System.out.println("The value of this fraction in decimal form is: " + divide);
}
//returning the fraction as a string #/#
public String toString() {
    return "Your fraction is: " + numerator + "/" + denominator;
}
public boolean equals(Fraction other) {
    if(other.divide == divide) {
        return true;
    }
    return false;
}

}

到目前为止,这是我的驱动程序的代码:

public class FractionDriver {

public static void main(String[] args) {
    Fraction fract1 = new Fraction();
    Fraction fract2 = new Fraction();

    //initialize variables
    fract1.setNumerator(1);
    fract1.setDenominator(2);
    fract2.setNumerator(5);
    fract2.setDenominator(10);

    for(int i = 0; i < 1; i++) {
        //testing toString method
        System.out.println(fract1.toString());
        System.out.println(fract2.toString());
        fract1.getValue();
        fract2.getValue();

    }
}

}

当我测试两个分数的getValue()方法时,每个分数都有0.0的结果,我不确定我的类方法中我做错了什么。 另外,我如何测试我的equals方法?

2 个答案:

答案 0 :(得分:2)

将int除以int得到另一个int。你没有一半等等。

请参阅Why is the result of 1/3 == 0?

答案 1 :(得分:-2)

获取价值的方法是VOID ......所以这就是你的问题。 它应该是

//returning value of the numerator divided by a denominator as a double
public  double getValue() {
    divide = numerator / denominator;
    this.divide = divide;
    return this.divide; 
}

但更好的做法

public  double getValue() {
    return numerator / denominator;
}