我试图整理出一个简单的名单,学生马克与一个简单的java程序,但我得到
线程“main”中出现异常java.lang.ClassCastException:无法将Student强制转换为java.lang.Comparable
public class Student {
public String name;
public int mark;
public Student(String name, int mark){
this.name=name;
this.mark=mark;
}
public int compareTo(Student o){
return this.mark-o.mark;
}
public String toString(){
String s = "Name: "+name+"\nMark: "+mark+"\n";
return s;
}
public static void main(String[] args) {
Student Class[] = new Student[9];
Class[0] = new Student("Henry",100);
Class[1] = new Student("Alex", 10);
Class[2] = new Student("Danielle",100);
Class[3] = new Student("Luke",10);
Class[4] = new Student("Bob",59);
Class[5] = new Student("Greg",76);
Class[6] = new Student("Cass",43);
Class[7] = new Student("Leg",12);
Class[8] = new Student("Bobe",13);
Arrays.sort(Class);
for(int i = 0;i<Class.length;i++){
System.out.println(Class[i]);
3条答案
按热度按时间jgwigjjp1#
你的
Student
类必须实现Comparable
接口,以便使用Arrays#sort
传递Student[]
数组。事实上,你的类当前有一个compareTo
方法并不意味着它实现了这个接口,你必须声明:b5lpy0ml2#
让你的
Student
类实现Comparable<Student>
。compareTo()
方法在排序时不能独立工作。另外,
Class
看起来不是一个很好的变量名。使用students
怎么样?另外,我发现您的compareTo
方法有一个问题:不要比较两个整数或长整型数相减的结果。结果可能溢出。请使用
Integer.compare(int, int)
方法。另外,去掉
public
字段,将其设置为private
,并提供public
getter来访问它们。tkclm6bt3#