给我上了这堂课,并告诉我解决错误并完成这堂课。

对于此作业,您将需要开发一个测试驱动程序和一个类似的类。幸运的是,富勒教授已经编写了这样的课程(大部分课程),您只需要添加一些代码并调试一些错误即可。
这就是我所拥有的以及所给予的。

public class Jedi implements Comparable {

    private String name;
    private double midi;

    public Jedi(String name, double midi) {
        this.name = name;
        this.midi = midi;
    }

    public Jedi(String name) {
        this.name = name;
        this.midi = -1;
    }

    public String toString() {
        return "Jedi " + name + "\nMidi-chlorians count : " + midi + "\n";
    }

    public double getMidi() {
        return midi;
    }

    public String getName() {
        return name;
    }

    // returns true if the object’s midi value are equal and false otherwise – CODE INCOMPLETE
    public boolean equals(Jedi other) {
        return this.getMidi() == other.getMidi();
    }

    // returns -1 if less, 1 if larger, or 0 if it is an equal midi count – CODE INCOMPLETE
    public int compareTo(Object other) {
        if (getMidi() < other.getMidi()) {
            return -1;
        } else if (getMidi > other.getMidi()) {
            return 1;
        } else if (this.equals(other)) {
            return 0;
        }
    }
}


我不断收到找不到符号-方法getMidi()

因为我无法弄清楚这有什么问题?

最佳答案

这就是问题:

public int compareTo(Object other)


您已经说过可以将此对象与任何其他对象进行比较。您不能调用other.getMidi(),因为getMidi()不是在Object上声明的方法。

我建议您更改类和方法声明以使用Comparable<T>是通用的事实:

public class Jedi implements Comparable<Jedi> {
    ...
    public int compareTo(Jedi other) {
        ...
    }
}

07-24 14:48