Java基础知识强化之集合框架笔记49:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台

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 }

运行效果,如下:

posted on 2015-10-07 15:07  鸿钧老祖  阅读(4196)  评论(0编辑  收藏  举报

导航