我正在学习如何编码,我遇到了类方法和测试这些方法的问题。这是问题所在:
在本实验中,我们将创建一个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方法?
答案 0 :(得分:2)
将int除以int得到另一个int。你没有一半等等。
答案 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;
}