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 }

运行效果,如下:

时间: 2024-10-12 11:55:58

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

Java基础知识强化之集合框架笔记07:Collection集合的遍历之迭代器遍历

1. Collection的迭代器: 1 Iterator iterator():迭代器,集合的专用遍历方式 2. 代码示例: package cn.itcast_03; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /* * Iterator iterator():迭代器,集合的专用遍历方式 * Iterator(迭代器): * Object next():获取元素,并移动

Java基础知识强化之集合框架笔记36:List练习之键盘录入多个数据在控制台输出最大值

1. 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值 分析: •  创建键盘录入数据对象 •  键盘录入多个数据,我们不知道多少个,所以用集合存储 •  以0结束,这个简单,只要键盘录入的数据是0,我就不继续录入数据了 •  把集合转成数组 •  对数组排序 •  获取该数组中的最大索引的值 2. 代码实现: 1 1. package cn.itcast_03; 2 3 import java.util.ArrayList; 4 import java.util.Arrays;

Java基础知识强化之集合框架笔记04:Collection集合的基本功能测试

1. Collection集合的基本功能测试: 1 package cn.itcast_01; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 /* 7 * 集合的由来: 8 * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 9 * 而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识

Java基础知识强化之集合框架笔记01:集合的由来与数组的区别

1. 集合的由来: 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储.而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识里面,有哪些是容器类型的呢?数组和StringBuffer.但是呢?StringBuffer的结果是一个字符串,不一定满足我们的要求,所以我们只能选择数组,这就是对象数组.而对象数组又不能适应变化的需求,因为数组的长度是固定的,这个时候,为了适应变化的需求

Java基础知识强化之集合框架笔记62:Map集合之HashMap嵌套HashMap

1. HashMap嵌套HashMap  传智播客          jc    基础班                      陈玉楼  20                      高跃     22          jy    就业班                      李杰     21                      曹石磊  23  先存储元素,然后遍历元素 2. 代码示例: 1 package cn.itcast_05; 2 3 import java.uti

Java基础知识强化之集合框架笔记11:Collection集合之迭代器的原理及源码解析

1. 迭代器为什么不定义成一个类,而是定义为一个接口 ?  答:假设迭代器定义的是一个类,这样我们就可以创建该类的对象,调用该类的方法来实现集合的遍历.但是呢? 我们想想,Java中提供了很多的集合类,而这些集合类的数据结构是不同的,所以,存储的方式和遍历的方式应该是不同的.进而它们的遍历方式也应该不是一样的,最终,就没有定义迭代器类.        而无论你是哪种集合,你都应该具备获取元素的操作,而且,最好在辅助于判断功能,这样,在获取前,先判断.这样的话就不容易出错.也就是说,判断功能和获取

Java基础知识强化之集合框架笔记60:Map集合之TreeMap(TreeMap&lt;Student,String&gt;)的案例

1. TreeMap(TreeMap<Student,String>)的案例 2. 案例代码: (1)Student.java: 1 package cn.itcast_04; 2 3 public class Student { 4 private String name; 5 private int age; 6 7 public Student() { 8 super(); 9 } 10 11 public Student(String name, int age) { 12 super

Java基础知识强化之集合框架笔记57:Map集合之HashMap集合(HashMap&lt;Student,String&gt;)的案例

1. HashMap集合(HashMap<Student,String>)的案例 HashMap<Student,String>键:Student      要求:如果两个对象的成员变量值都相同,则为同一个对象.值:String HashMap是最常用的Map集合,它的键值对在存储时要根据键的哈希码来确定值放在哪里. HashMap 中作为键的对象必须重写Object的hashCode()方法和equals()方法 2. 代码示例: (1)Student.java,如下: 1 pa

Java基础知识强化之集合框架笔记58:Map集合之LinkedHashMap类的概述

1. LinkedHashMap类的概述 LinkedHashMap:Map接口的哈希表(保证唯一性) 和 链接(保证有序性)列表实现,具有可预知的迭代顺序. 2. 代码示例: 1 package cn.itcast_03; 2 3 import java.util.LinkedHashMap; 4 import java.util.Set; 5 6 /* 7 * LinkedHashMap:是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序. 8 * 由哈希表保证键的唯一性 9 * 由链