7-1 教师类-2
修改题目143
修改教师类,使得由多个Teacher对象所形成的数组可以排序(编号由低到高排序),并在main函数中使用Arrays.sort(Object[] a)方法排序
定义一个类TeacherManagement,包含教师数组,提供方法add(Teacher[]),使其可以添加教师,提供重载方法search,方法可以在一组给定的教师中,根据姓名或年龄返回等于指定姓名或年龄的教师的字符串信息,信息格式为:“no: , name:, age: **, seminary: **”。如果没有满足条件的教师,则返回“no such teacher”。
输入格式:
教师个数
教师信息
待查找教师的姓名
待查找教师的年龄
输出格式:
排序后的信息
按姓名查找的老师信息
按年龄查找的老师信息
输入样例:
在这里给出一组输入。例如:
4
3 Linda 38 SoftwareEngineering
1 Mindy 27 ComputerScience
4 Cindy 28 SoftwareEngineering
2 Melody 27 ComputerScience
Cindy
27
输出样例:
在这里给出相应的输出。例如:
no: 1, name: Mindy, age: 27, seminary: ComputerScience
no: 2, name: Melody, age: 27, seminary: ComputerScience
no: 3, name: Linda, age: 38, seminary: SoftwareEngineering
no: 4, name: Cindy, age: 28, seminary: SoftwareEngineering
search by name:
no: 4, name: Cindy, age: 28, seminary: SoftwareEngineering
search by age:
no: 1, name: Mindy, age: 27, seminary: ComputerScience
no: 2, name: Melody, age: 27, seminary: ComputerScience
示例代码
题目分析
看题目就知道,这道题实际上是另一道题的延申,所以就不得不看看教师类1的题目了。
下面是教师类1的题目:
设计一个教师类Teacher,要求: 属性有编号(int no)、姓名(String name)、年龄(int age)、所属学院(String seminary),为这些属性设置相应的get和set方法。 为Teacher类重写equals方法,要求:当两个教师对象的no相同时返回true。 重写Teacher类的toString方法,通过该方法可以返回“no: , name:, age: **, seminary: **”形式的字符串。
输入格式:
两个教师对象的编号,姓名,年龄,学院
输出格式:
教师的信息 两个教师是否相等
输入样例:
在这里给出一组输入。例如:
1 Linda 38 SoftwareEngineering
2 Mindy 27 ComputerScience
输出样例:
在这里给出相应的输出。例如:
no: 1, name:Linda, age: 38, seminary: SoftwareEngineering
no: 2, name:Mindy, age: 27, seminary: ComputerScience
false
教师类1 这道题比较简单,重要的点是重写 equals 方法和 toString 方法,所以需要知道什么是重写方法,怎么重写方法,以及了解 equals 方法和 toString 方法的作用是什么。
还有一个点是类的私有属性和公有属性,需要知道这两者的区别,以及每个属性对应的 get 和 set 方法应该怎么写。
教师类2要求我们在教师类1的基础上作出修改。
主要是两点。
一点是需要多个 Teacher 对象所形成的数组可以使用 Arrays.sort(Object[] a) 方法排序。为了做到这点,我们需要在定义 Teacher 类的时候实现 Comparable 接口,用于 Teacher 对象的比较。所以我们需要了解什么是接口,以及 Comparable 接口怎么写,作用是什么。
另一点是多了一个 TeacherManagement 类,这个类里面要有教师数组,add(Teacher[]) 方法,使其可以添加教师,search 方法,使其可以在一组给定的教师中,根据姓名或年龄返回等于指定姓名或年龄的教师的字符串信息。
首先说 add(Teacher[]) 方法,在示例代码中,用到了 Arrays.copyOf 方法和 arraycopy 方法来实现往教师数组中添加新的教师,用到了 Arrays.sort 方法来给教师数组排序。所以我们得了解这些方法的用法和作用。
再来说 search 方法,因为既要求根据名字搜索,也要求根据年龄搜索,为了实现这一要求需要用到重载方法,所以必须了解重载方法的含义和作用。另外,在 search 方法中还用到了for循环来遍历教师数组,用到了String类的equals方法来判断字符串内容是否匹配,用到了StringBuilder类来生成字符串。(其实这里没必要,判断字符串内容是否匹配后分别输出不同的信息即可,不过多学点总是好的)