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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package cn.itcast_自然排序与比较器排序;

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

  5. /*
  6. * 创建5个学生信息(姓名、语文成绩、英语成绩、数学成绩),按照总分从高到低在控制台输出
  7. */
  8. public class Demo_比较器排序 {
  9.         public static void main(String[] args) {
  10.                 // 创建集合对象,并用比较器排序,实现匿名内部类
  11.                 TreeSet<Stu> ts = new TreeSet<Stu>(new Comparator<Stu>() {

  12.                         @Override
  13.                         public int compare(Stu o1, Stu o2) {
  14.                                 // 首先,按要求总分从高到底排序
  15.                                 int num = o1.getSum() - o2.getSum();
  16.                                 // 如果总分相同,再判断其他条件
  17.                                 int num1 = num == 0 ? o1.getChinese() - o2.getChinese() : num;
  18.                                 int num2 = num1 == 0 ? o1.getEnglish() - o2.getEnglish() : num1;
  19.                                 int num3 = num2 == 0 ? o1.getMath() - o2.getMath() : num2;
  20.                                 return num3;
  21.                         }
  22.                 });
  23.                 System.out.println("开始录入成绩!");
  24.                 // 控制台输入3个学生信息
  25.                 Scanner sc = new Scanner(System.in);
  26.                 for (int i = 0; i < 3; i++) {
  27.                         System.out.println("请输入学生姓名:");
  28.                         String name = sc.next();
  29.                         System.out.println("请输入语文成绩:");
  30.                         int chinese = sc.nextInt();
  31.                         System.out.println("请输入英语成绩:");
  32.                         int english = sc.nextInt();
  33.                         System.out.println("请输入数学成绩:");
  34.                         int math = sc.nextInt();
  35.                         // 将学生封装到到学生对象中
  36.                         Stu stu = new Stu();
  37.                         stu.setName(name);
  38.                         stu.setChinese(chinese);
  39.                         stu.setEnglish(english);
  40.                         stu.setMath(math);
  41.                         // 将学生对象添加到集合中
  42.                         ts.add(stu);
  43.                 }
  44.                 System.out.println("成绩录入完毕!");
  45.                 System.out.println("姓名\t\t" + "语文成绩\t\t" + "英语成绩\t\t" + "数学成绩\t\t"+"总分");
  46.                 // 遍历输出
  47.                 for (Stu s : ts) {
  48.                         System.out.println(s.getName() + "\t\t" + s.getChinese() + "\t\t"
  49.                                         + s.getEnglish() + "\t\t" + s.getMath()+"\t\t"+s.getSum());
  50.                 }

  51.         }

  52. }
复制代码

3 个回复

倒序浏览
写的很好,我也尝试写一个
回复 使用道具 举报
哈哈  你这还少个Stu类呀。。
不完整 不完整,,
回复 使用道具 举报
看看,集合用的还是很多的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马