定义包含学号、姓名和成绩信息的学生类Student。在测试类中定义存放n个学生对象数组。。

定义包含学号、姓名和成绩信息的学生类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;
        }
        
    }