给我上了这堂课,并告诉我解决错误并完成这堂课。
对于此作业,您将需要开发一个测试驱动程序和一个类似的类。幸运的是,富勒教授已经编写了这样的课程(大部分课程),您只需要添加一些代码并调试一些错误即可。
这就是我所拥有的以及所给予的。
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) {
...
}
}