定义包含学号、姓名和成绩信息的学生类Student。在测试类中定义存放n个学生对象数组,使用匿名类来实现接口Comparator对学生的成绩进行降序排列,输出排序结果。
https://www.freesion.com/article/42681456744/
/**
* 方便输入和测试的原因,把属性 姓名和学号 给隐藏忽略输入了,需要的自己改下 几个null值为name1、mark1.....mark4。
*/
/**
* @author XXXXX
* 2、Student类实现Comparable接口,并实现compareTo方法(按照成绩属性比较大小);---->这句话后面一句不懂
*
*/
//暂时不想改了,出了错误,只满足第二局前一部分,后一部分,有可能在Student类中实现????应该不是在Student类中实现实现Comparable接口吧。。。。。。那样的话,怎么实现ComparableStudent???最多在Student类实现compareTo方法(按照成绩属性比较大小),然后在ComparableStudent类中实现Comparable接口吧。。。。。。。。。。。。
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
/*System.out.print("Enter the mark of Student1: ");
String mark1=sc.next();
System.out.print("Enter the name of Student1: ");
String name1=sc.next();*/
System.out.print("Enter the grade of Student1: ");
double grade1=sc.nextDouble();
/*System.out.print("Enter the mark of Student2: ");
String mark2=sc.next();
System.out.print("Enter the name of Student2: ");
String name2=sc.next();*/
System.out.print("Enter the grade of Student2: ");
double grade2=sc.nextDouble();
/*System.out.print("Enter the mark of Student3: ");
String mark3=sc.next();
System.out.print("Enter the name of Student3: ");
String name3=sc.next();*/
System.out.print("Enter the grade of Student3: ");
double grade3=sc.nextDouble();
/*System.out.print("Enter the mark of Student4: ");
String mark4=sc.next();
System.out.print("Enter the name of Student4: ");
String name4=sc.next();*/
System.out.print("Enter the grade of Student4: ");
double grade4=sc.nextDouble();
/*System.out.print("Enter the mark of Student5: ");
String mark5=sc.next();
System.out.print("Enter the name of Student5: ");
String name5=sc.next();*/
System.out.print("Enter the grade of Student5: ");
double grade5=sc.nextDouble();
System.out.println();
ComparableStudent student1=new ComparableStudent(null, null, grade1);
ComparableStudent student2=new ComparableStudent(null, null, grade2);
ComparableStudent student3=new ComparableStudent(null, null, grade3);
ComparableStudent student4=new ComparableStudent(null, null, grade4);
ComparableStudent student5=new ComparableStudent(null, null, grade5);
ComparableStudent student6 = (ComparableStudent)Max.max(student1, student2);
ComparableStudent student7 = (ComparableStudent)Max.max(student3, student4);
ComparableStudent student8 = (ComparableStudent)Max.max(student6, student7);
ComparableStudent student9 = (ComparableStudent)Max.max(student5, student8);
System.out.println("The Student1's Grade is " + student1.getGrade());
System.out.println("The Student2's Grade is " + student2.getGrade());
System.out.println("The Student3's Grade is " + student3.getGrade());
System.out.println("The Student4's Grade is " + student4.getGrade());
System.out.println("The Student5's Grade is " + student5.getGrade());
System.out.println();
ComparableStudent[] students= {
new ComparableStudent(null, null, grade1),
new ComparableStudent(null, null, grade2),
new ComparableStudent(null, null, grade3),
new ComparableStudent(null,null, grade4),
new ComparableStudent(null, null, grade5),
};
java.util.Arrays.sort( students);
for(Student student:students)
{
System.out.println(student.getGrade());
}
}
}
class Student
{
String mark;
String name;
double grade;
Student()
{
}
Student(String mark,String name,double grade)
{
this.mark=mark;
this.name=name;
this.grade=grade;
}
void setMark(){
this.mark=mark;
}
public String getMark(String mark){
return mark;
}
void setNamek(){
this.name=name;
}
public String getName(String name){
return name;
}
void setGrade(){
this.grade=grade;
}
public double getGrade(){
return grade;
}
}
class ComparableStudent extends Student implements Comparable
{
public ComparableStudent(String mark,String name,double grade)
{
super(mark, name, grade);
}
public int compareTo(Object o)
{
if(getGrade()>((Student) o).getGrade())
{
return 1;
}
else if(getGrade()<((Student) o).getGrade())
{
return -1;
}
else
{
return 0;
}
}
//@Override
public String toString()
{
return super.toString()+"mark: "+getMark(mark)+" name"+getName(name)+"grade:" +getGrade();
/输出只有成绩,没有学号和姓名
}
}
class Max
{
public static ComparableStudent max(ComparableStudent o1, ComparableStudent o2)
{
if (o1.compareTo(o2) > 0)
return o1;
else
return o2;
}
}