在for循环中使用compareTo的正确方法是什么?我想在数组中按升序对Course
个对象进行排序。我担心我insert()
方法中循环中compareTo的正确语法。
if((array[i].courseNumber.compareTo(object.courseNumber)) <= 0)
- 给我错误。
public class Courses implements Comparable{
private String title;
private int courseNumber;
private Courses[] array;
private int size;
public Courses(String title, int courseNumber){
this.title = title;
this.courseNumber = courseNumber;
this.array = new Courses[10];
this.size = 0;
}
public void insert(String title, int courseNumber){
Courses object = new Courses(title, courseNumber);
if(size == 0){
array[0] = object;
}
else{
int i;
for(i = 0; i < size; i++){
if((array[i].courseNumber.compareTo(object.courseNumber)) <= 0)
//do STUFF
}
}
}
@Override
public int compareTo(Object o) {
if(o instanceof Courses){
Courses obj1 = (Courses)o;
return this.courseNumber - obj1.courseNumber;
}
return -1;
}
}
答案 0 :(得分:1)
if((array[i].courseNumber.compareTo(object.courseNumber)) <= 0)
由于courseNumber
是基元(不是对象)而给出错误,因此没有定义compareTo
方法。
如果您想使用该语法来比较整数,可以使用静态Integer.compare
方法。
if(Integer.compare(array[i].courseNumber, object.courseNumber) <= 0)
如果您想使用定义的compareTo
方法,请执行
if(array[i].compareTo(object) <= 0))
答案 1 :(得分:0)
提示:您没有将对象作为参数传递。
这如何比较两个对象?
for(i = 0; i < size; i++){
if((array[i].courseNumber.compareTo(object.courseNumber)) <= 0)
//do STUFF
}
您应该查看Arrays.sort(Object[])
,它会使用Comparable
界面对其进行排序。