这是我的代码,请不要给我解决任务的方法。谁能启发我编译错误?以及为什么它不能正常工作。我以前写过这样的代码...
简单的代码:
学生.java
public class Student
{
private int id;
public Student(int NewId)
{
id = NewId;
}
public int getId(){ return id; }
public void setId(int NewId){ id = NewId; }
}
Sort.java
public class Sort
{
public static Comparator<Student> getStudentIdComparator()
{
return new IdComparator();//<- compile error
}
class IdComparator implements Comparator<Student>
{
@Override
public int compare(Student o1, Student o2)
{
return o1.getId() - o2.getId();
}
}
}
MainFile.java
class MainFile
{
public static void main(String[] args)
{
Student s[] = new Student[10];
// Here you would just create the instance variable with student id in the argument
Comparator<Student> studentIdComparator = Sort.getStudentIdComparator();
Arrays.sort(students, studentIdComparator);
}
}
最佳答案
您正在尝试从静态类中访问非静态类。
只需在比较器类定义之前添加static关键字,例如:
static class IdComparator implements Comparator<Student>
或使用Sort这样的实例:
new Sort().new IdComparator();
还要避免使用
return o1.getId() - o2.getId();
,因为它可能导致下溢。使用return Integer.compare(o1.getId(), o2.getId());
关于java - Java比较器将大学生的学生ID从最低编号到最高编号进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29362053/