7-1 教師類-2
修改題目143
修改教師類,使得由多個Teacher對象所形成的數(shù)組可以排序(編號由低到高排序),并在main函數(shù)中使用Arrays.sort(Object[] a)方法排序
定義一個類TeacherManagement,包含教師數(shù)組,提供方法add(Teacher[]),使其可以添加教師,提供重載方法search,方法可以在一組給定的教師中,根據(jù)姓名或年齡返回等于指定姓名或年齡的教師的字符串信息,信息格式為:“no:?, name:, age: **, seminary: **”。如果沒有滿足條件的教師,則返回“no such teacher”。
輸入格式:
教師個數(shù)
教師信息
待查找教師的姓名
待查找教師的年齡
輸出格式:
排序后的信息
按姓名查找的老師信息
按年齡查找的老師信息
輸入樣例:
在這里給出一組輸入。例如:
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的題目:
設(shè)計一個教師類Teacher,要求: 屬性有編號(int no)、姓名(String name)、年齡(int age)、所屬學院(String seminary),為這些屬性設(shè)置相應的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 方法的作用是什么。
還有一個點是類的私有屬性和公有屬性,需要知道這兩者的區(qū)別,以及每個屬性對應的 get 和 set 方法應該怎么寫。
教師類2要求我們在教師類1的基礎(chǔ)上作出修改。
主要是兩點。
一點是需要多個 Teacher 對象所形成的數(shù)組可以使用 Arrays.sort(Object[] a) 方法排序。為了做到這點,我們需要在定義 Teacher 類的時候?qū)崿F(xiàn) Comparable 接口,用于 Teacher 對象的比較。所以我們需要了解什么是接口,以及?Comparable 接口怎么寫,作用是什么。
另一點是多了一個?TeacherManagement 類,這個類里面要有教師數(shù)組,add(Teacher[]) 方法,使其可以添加教師,search 方法,使其可以在一組給定的教師中,根據(jù)姓名或年齡返回等于指定姓名或年齡的教師的字符串信息。
首先說 add(Teacher[]) 方法,在示例代碼中,用到了?Arrays.copyOf 方法和 arraycopy 方法來實現(xiàn)往教師數(shù)組中添加新的教師,用到了 Arrays.sort 方法來給教師數(shù)組排序。所以我們得了解這些方法的用法和作用。
再來說 search 方法,因為既要求根據(jù)名字搜索,也要求根據(jù)年齡搜索,為了實現(xiàn)這一要求需要用到重載方法,所以必須了解重載方法的含義和作用。另外,在?search 方法中還用到了for循環(huán)來遍歷教師數(shù)組,用到了String類的equals方法來判斷字符串內(nèi)容是否匹配,用到了StringBuilder類來生成字符串。(其實這里沒必要,判斷字符串內(nèi)容是否匹配后分別輸出不同的信息即可,不過多學點總是好的)