1. 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台:
分析:
A: 定义学生类
B: 创建一个TreeSet集合
C: 总分从高到底如何实现呢?
D: 键盘录入5个学生信息
E: 遍历TreeSet集合
2. 代码示例:
(1)Student.java:
1 package cn.itcast_08; 2 3 public class Student { 4 // 姓名 5 private String name; 6 // 语文成绩 7 private int chinese; 8 // 数学成绩 9 private int math; 10 // 英语成绩 11 private int english; 12 13 public Student(String name, int chinese, int math, int english) { 14 super(); 15 this.name = name; 16 this.chinese = chinese; 17 this.math = math; 18 this.english = english; 19 } 20 21 public Student() { 22 super(); 23 } 24 25 public String getName() { 26 return name; 27 } 28 29 public void setName(String name) { 30 this.name = name; 31 } 32 33 public int getChinese() { 34 return chinese; 35 } 36 37 public void setChinese(int chinese) { 38 this.chinese = chinese; 39 } 40 41 public int getMath() { 42 return math; 43 } 44 45 public void setMath(int math) { 46 this.math = math; 47 } 48 49 public int getEnglish() { 50 return english; 51 } 52 53 public void setEnglish(int english) { 54 this.english = english; 55 } 56 57 public int getSum() { 58 return this.chinese + this.math + this.english; 59 } 60 }
(2)TreeSetDemo.java:
1 package cn.itcast_08; 2 3 import java.util.Comparator; 4 import java.util.Scanner; 5 import java.util.TreeSet; 6 7 /* 8 * 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台 9 * 10 * 分析: 11 * A:定义学生类 12 * B:创建一个TreeSet集合 13 * C:总分从高到底如何实现呢? 14 * D:键盘录入5个学生信息 15 * E:遍历TreeSet集合 16 */ 17 public class TreeSetDemo { 18 public static void main(String[] args) { 19 // 创建一个TreeSet集合 20 TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() { 21 @Override 22 public int compare(Student s1, Student s2) { 23 // 总分从高到低 24 int num = s2.getSum() - s1.getSum(); 25 // 总分相同的不一定语文相同 26 int num2 = num == 0 ? s1.getChinese() - s2.getChinese() : num; 27 // 总分相同的不一定数学相同 28 int num3 = num2 == 0 ? s1.getMath() - s2.getMath() : num2; 29 // 总分相同的不一定英语相同 30 int num4 = num3 == 0 ? s1.getEnglish() - s2.getEnglish() : num3; 31 // 姓名还不一定相同呢 32 int num5 = num4 == 0 ? s1.getName().compareTo(s2.getName()) 33 : num4; 34 return num5; 35 } 36 }); 37 38 System.out.println("学生信息录入开始"); 39 // 键盘录入5个学生信息 40 for (int x = 1; x <= 5; x++) { 41 Scanner sc = new Scanner(System.in); 42 System.out.println("请输入第" + x + "个学生的姓名:"); 43 String name = sc.nextLine(); 44 System.out.println("请输入第" + x + "个学生的语文成绩:"); 45 String chineseString = sc.nextLine(); 46 System.out.println("请输入第" + x + "个学生的数学成绩:"); 47 String mathString = sc.nextLine(); 48 System.out.println("请输入第" + x + "个学生的英语成绩:"); 49 String englishString = sc.nextLine(); 50 51 // 把数据封装到学生对象中 52 Student s = new Student(); 53 s.setName(name); 54 s.setChinese(Integer.parseInt(chineseString)); 55 s.setMath(Integer.parseInt(mathString)); 56 s.setEnglish(Integer.parseInt(englishString)); 57 58 // 把学生对象添加到集合 59 ts.add(s); 60 } 61 System.out.println("学生信息录入完毕"); 62 63 System.out.println("学习信息从高到低排序如下:"); 64 System.out.println("姓名\t语文成绩\t数学成绩\t英语成绩"); 65 // 遍历集合 66 for (Student s : ts) { 67 System.out.println(s.getName() + "\t" + s.getChinese() + "\t" 68 + s.getMath() + "\t" + s.getEnglish()); 69 } 70 } 71 }
运行效果,如下: