存储学员信息,每个学员信息包括学号、姓名、三门课的成绩、平均成绩,能按平均成绩排序输出学员信息。
做了好多个小时了实在是想不出来了,无奈上来求助大神

解决方案 »

  1.   

    treeset ,这个真心没用过。
    正常来说,如果是用mvc之类的,这需求应该做起来挺快的。
    写sql,用jdbc查询出list,展现到前台!
      

  2.   

    这是JavaSE的题目?如果是这样,直接用类+集合API就搞定了;代码如下:/**
     * 学生类 
     * 由于要实现排序,所以继承Comparable接口
     */
    public class Student implements Comparable<Student>{

    /**
     * 学号
     */
    private String num;/**
     * 姓名
     */
    private String name;
    /**
     * 语文
     */
    private double yuwen;
    /**
     * 数学
     */
    private double shuxue;
    /**
     * 外语
     */
    private double waiyu;/**
     * 平均成绩
     */
    private double ave;
    public String getNum() {
    return num;
    }
    public void setNum(String num) {
    this.num = num;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public double getYuwen() {
    return yuwen;
    }
    public void setYuwen(double yuwen) {
    this.yuwen = yuwen;
    }
    public double getShuxue() {
    return shuxue;
    }
    public void setShuxue(double shuxue) {
    this.shuxue = shuxue;
    }
    public double getWaiyu() {
    return waiyu;
    }
    public void setWaiyu(double waiyu) {
    this.waiyu = waiyu;
    }
    public double getAve() {
    return ave;
    }/**
     * 根据三门成绩求出平均成绩
     */
    public void setAve() {
    this.ave=(yuwen+shuxue+waiyu)/3;
    }/*重写compareTo方法
     */
    public int compareTo(Student other) {
    int flag=0;
    //把自身的平均成绩和另外一个学生的平均成绩做差  
    //如果相等返回0;如果小于另一个,返回-1;如果大于另一个,返回1
    double cha=this.getAve()-other.getAve();
    if(cha==0){
    flag=0;
    }else if(cha<0){
    flag=-1;
    }else{
    flag=1;
    }
    return flag;
    }public Student(String num, String name, double yuwen, double shuxue,
    double waiyu) {
    super();
    this.num = num;
    this.name = name;
    this.yuwen = yuwen;
    this.shuxue = shuxue;
    this.waiyu = waiyu;
    //构造对象的时候直接求出平均成绩
    this.setAve();
    }
    public Student() {
    super();
    }/* 为了便于调试和输出 生成toString方法
     */
    @Override
    public String toString() {
    return "Student [学号=" + num + ", 姓名=" + name + ", 语文=" + yuwen
    + ", 数学=" + shuxue + ", 外语=" + waiyu + ", 平均=" + ave
    + "]";
    }}import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;public class SavaAndOutput {
    public static void main(String[] args) {
    //为了方便,我就不写从控制台输入的语句了,直接添加几个学生到集合,但你自己要去试从控制台输入
    Student s1=new Student("S20211", "张三", 90, 80.5, 91.5);
    Student s2=new Student("S20212", "李四", 70, 85,80);
    Student s3=new Student("S20213", "王五", 90, 77, 86);
    Student s4=new Student("S20214", "赵二", 95, 80.5, 62.5);
    Student s5=new Student("S20215", "钱一", 88, 68.5, 92);
    List<Student> list=new ArrayList<Student>();
    list.add(s1);
    list.add(s2);
    list.add(s3);
    list.add(s4);
    list.add(s5);
    //由于Student类已经实现了compareTo方法,所以可以直接排序
    Collections.sort(list);
    //遍历输出
    for(Student s:list){
    System.out.println(s);
    }
    }
    }结果:
    Student [学号=S20212, 姓名=李四, 语文=70.0, 数学=85.0, 外语=80.0, 平均=78.33333333333333]
    Student [学号=S20214, 姓名=赵二, 语文=95.0, 数学=80.5, 外语=62.5, 平均=79.33333333333333]
    Student [学号=S20215, 姓名=钱一, 语文=88.0, 数学=68.5, 外语=92.0, 平均=82.83333333333333]
    Student [学号=S20213, 姓名=王五, 语文=90.0, 数学=77.0, 外语=86.0, 平均=84.33333333333333]
    Student [学号=S20211, 姓名=张三, 语文=90.0, 数学=80.5, 外语=91.5, 平均=87.33333333333333]
      

  3.   

    楼上的方法很容易想到的一种方法!类实现compareable,用集合的排序方法就可以排序了!