如何修复方法 compareTo 中的代码,使其不仅 return 所有值都为零?

How to fix the code in method compareTo to make it not only return all value in zero?

我的任务是在 compareTo 块中编写代码来比较 main 方法中的三个对象。我可以编译代码,但是当它运行时,我得到了零中的所有 return 值。

对象中的每个参数都是分子,denominator.I在每个对象中划分这些数字,将一个对象与另一个对象进行比较,return它们成为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);

我希望输出是

但实际输出return全为零。 请告诉我如何解决它。

除以 / 得到的结果没有余数。 这就是为什么您的示例中的每个比率都等于 2 并且差异全部为零。

您需要考虑取模运算符 (%),它会为您提供 Ratio 实例之间准确差异所需的余数。