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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

3 个回复

倒序浏览
看视频吧
回复 使用道具 举报
本帖最后由 yindalei00 于 2016-2-20 17:42 编辑
  1. package cn.itcast_08;

  2. public class Student {
  3.     // 姓名
  4.     private String name;
  5.     // 语文成绩
  6.     private int chinese;
  7.     // 数学成绩
  8.     private int math;
  9.     // 英语成绩
  10.     private int english;

  11.     public Student(String name, int chinese, int math, int english) {
  12.         super();
  13.         this.name = name;
  14.         this.chinese = chinese;
  15.         this.math = math;
  16.         this.english = english;
  17.     }

  18.     public Student() {
  19.         super();
  20.     }

  21.     public String getName() {
  22.         return name;
  23.     }

  24.     public void setName(String name) {
  25.         this.name = name;
  26.     }

  27.     public int getChinese() {
  28.         return chinese;
  29.     }

  30.     public void setChinese(int chinese) {
  31.         this.chinese = chinese;
  32.     }

  33.     public int getMath() {
  34.         return math;
  35.     }

  36.     public void setMath(int math) {
  37.         this.math = math;
  38.     }

  39.     public int getEnglish() {
  40.         return english;
  41.     }

  42.     public void setEnglish(int english) {
  43.         this.english = english;
  44.     }

  45.     public int getSum() {
  46.         return this.chinese + this.math + this.english;
  47.     }
  48. }
复制代码


回复 使用道具 举报
本帖最后由 yindalei00 于 2016-2-20 17:43 编辑
  1. package cn.itcast_08;

  2. import java.util.Comparator;
  3. import java.util.Scanner;
  4. import java.util.TreeSet;

  5. /*
  6. * 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台
  7. *
  8. * 分析:
  9. *         A:定义学生类
  10. *         B:创建一个TreeSet集合
  11. *         C:总分从高到底如何实现呢?        
  12. *         D:键盘录入5个学生信息
  13. *         E:遍历TreeSet集合
  14. */
  15. public class TreeSetDemo {
  16.     public static void main(String[] args) {
  17.         // 创建一个TreeSet集合
  18.         TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
  19.             @Override
  20.             public int compare(Student s1, Student s2) {
  21.                 // 总分从高到低
  22.                 int num = s2.getSum() - s1.getSum();
  23.                 // 总分相同的不一定语文相同
  24.                 int num2 = num == 0 ? s1.getChinese() - s2.getChinese() : num;
  25.                 // 总分相同的不一定数学相同
  26.                 int num3 = num2 == 0 ? s1.getMath() - s2.getMath() : num2;
  27.                 // 总分相同的不一定英语相同
  28.                 int num4 = num3 == 0 ? s1.getEnglish() - s2.getEnglish() : num3;
  29.                 // 姓名还不一定相同呢
  30.                 int num5 = num4 == 0 ? s1.getName().compareTo(s2.getName())
  31.                         : num4;
  32.                 return num5;
  33.             }
  34.         });

  35.         System.out.println("学生信息录入开始");
  36.         // 键盘录入5个学生信息
  37.         for (int x = 1; x <= 5; x++) {
  38.             Scanner sc = new Scanner(System.in);
  39.             System.out.println("请输入第" + x + "个学生的姓名:");
  40.             String name = sc.nextLine();
  41.             System.out.println("请输入第" + x + "个学生的语文成绩:");
  42.             String chineseString = sc.nextLine();
  43.             System.out.println("请输入第" + x + "个学生的数学成绩:");
  44.             String mathString = sc.nextLine();
  45.             System.out.println("请输入第" + x + "个学生的英语成绩:");
  46.             String englishString = sc.nextLine();

  47.             // 把数据封装到学生对象中
  48.             Student s = new Student();
  49.             s.setName(name);
  50.             s.setChinese(Integer.parseInt(chineseString));
  51.             s.setMath(Integer.parseInt(mathString));
  52.             s.setEnglish(Integer.parseInt(englishString));

  53.             // 把学生对象添加到集合
  54.             ts.add(s);
  55.         }
  56.         System.out.println("学生信息录入完毕");

  57.         System.out.println("学习信息从高到低排序如下:");
  58.         System.out.println("姓名\t语文成绩\t数学成绩\t英语成绩");
  59.         // 遍历集合
  60.         for (Student s : ts) {
  61.             System.out.println(s.getName() + "\t" + s.getChinese() + "\t"
  62.                     + s.getMath() + "\t" + s.getEnglish());
  63.         }
  64.     }
  65. }
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马