我的任务是在compareTo
块中编写代码,以比较main方法中的三个对象。我可以编译代码,但是在运行时,所有返回值都为零。
对象中的每个参数都是分子和分母。我将每个对象中的这些数字相除,将一个对象相互比较,然后将它们返回为int类型。
public class Ratio implements Comparable {
protected int numerator;
protected int denominator;
public Ratio(int top, int bottom) //precaution: bottom !=0
{
numerator = top;
denominator = bottom;
}
public int getNumerator() {
return numerator;
}
public int getDenominator() {
return denominator;
}
public int compareTo(Object other) { //precaution: other is non-null Ratio object
//my own code
int a = this.getNumerator() / this.getDenominator();
int b = ((Ratio) other).getNumerator() / ((Ratio) other).getDenominator();
int difference = a - b;
if (difference == 0) {
return 0;
} else if (difference > 0) {
return 1;
} else {
return -1;
}
}
}
这些是main方法中给出的对象。
Ratio r1 = new Ratio(10,5);
Ratio r2 = new Ratio(7,3);
Ratio r3 = new Ratio(20,10);
我希望输出是
但是实际输出返回全零。 请告诉我如何解决。
答案 0 :(得分:0)
当您除以/
时,得到的结果将没有余数。
这就是示例中每个比率等于2且差异全为零的原因。
您需要考虑模数运算符(%
),该运算符可以为Ratio
实例之间的精确差提供余数。