A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© boom_pm2.5 中级黑马   /  2016-11-19 23:30  /  507 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

上`干货
题文~
//键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),
//按照总分从高到低输出到控制台

--------------------------------------------------------------------------------------------------------
测试 代码区

import java.util.HashSet;
import java.util.Scanner;
import java.util.TreeSet;

//键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),
//按照总分从高到低输出到控制台
public class HomeWorke01 {
        public static void main(String[] args) {
                TreeSet<Student> ts = new TreeSet<>();
       
               
                while (ts.size()<5) {
                        //因为有 姓名, 所以我们把它 输入成 String类型的
                        System.out.println("请输入学生的信息(参照格式  姓名,语文成绩,数学成绩,英语成绩):");
                        Scanner sc = new Scanner(System.in);
                        String s1 = sc.nextLine();
                        Student s= new Student();
                        String str = ",";
                        String arr[] = s1.split(str);
                        s.setName(arr[0]);
                        s.setChinese(Integer.parseInt(arr[1]));
                        s.setMath(Integer.parseInt(arr[2]));
                        s.setEnglish(Integer.parseInt(arr[3]));
                        s.setSum(s.getChinese()+s.getEnglish()+s.getMath());
                        ts.add(s);
                }
                //因为有 姓名, 所以我们把它 输入成 String类型的
       
                for (Student student : ts) {
                        System.out.println(student);
                }
               
               
               
        }
}

----------------------------------------------------------------------------------------------------------------------------------
学生类  代码区
public class Student implements Comparable<Student>{
        private String name;
        private double chinese;
        private double math;
        private double english;
        private double sum;
        public Student() {
                super();
                // TODO Auto-generated constructor stub
        }
        public Student(String name, double chinese, double math, double english) {
                super();
                this.name = name;
                this.chinese = chinese;
                this.math = math;
                this.english = english;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public double getChinese() {
                return chinese;
        }
        public void setChinese(double chinese) {
                this.chinese = chinese;
        }
        public double getMath() {
                return math;
        }
        public void setMath(double math) {
               
                this.math = math;
        }
        public double getEnglish() {
                return english;
        }
        public void setEnglish(double english) {
                this.english = english;
        }
        public double getSum() {
                return sum;
        }
        public void setSum(double sum) {
                this.sum = sum;
        }
        @Override
        public String toString() {
                return "姓名" + name + ", 语文成绩:" + chinese + ",数学成绩:"
                                + math + ",英语成绩:" + english + "]";
        }
        @Override
        public int compareTo(Student o) {
                double num = o.sum - this.sum;
                return (int) (num==0? 1: num);
        }
       
}


----]-------------------------------------------------------------------------------------------------------------------

总结下:
这道题,用到了今天学习到的 treeset方法,
然后在自定义类中,重写 equals, hashcode, comparable 方法,

通过判断 sum值得大小, 返回 num值,然后就能 将成绩从大到小排列了 ..

1 个回复

正序浏览
只要难在  从写方法上,到后面还要家条件什么的.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马