149 - 教师类-2
Time Limit: 1000 Memory Limit: 65535
Submit: 754 Solved: 275
Description
修改题目143
1. 修改教师类,使得由多个Teacher对象所形成的数组可以排序(编号由低到高排序),并在main函数中使用Arrays.sort(Object[] a)方法排序
2. 定义一个类TeacherManagement,包含教师数组,提供方法add(Teacher[]),使其可以添加教师,提供重载方法search,方法可以在一组给定的教师中,根据姓名或年龄返回等于指定姓名或年龄的教师的字符串信息,信息格式为:“no: **, name:**, age: **, seminary: **”。如果没有满足条件的教师,则返回“no such teacher”。
Input
教师个数
教师信息
待查找教师的姓名
待查找教师的年龄
Output
排序后的信息
按姓名查找的老师信息
按年龄查找的老师信息
Sample Input
4
3 Linda 38 SoftwareEngineering
1 Mindy 27 ComputerScience
4 Cindy 28 SoftwareEngineering
2 Melody 27 ComputerScience
Cindy
27
Sample Output
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
HINT
Pre Append Code
Post Append Code
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String [] args)
{
Scanner scan = new Scanner(System.in);//读入教师个数
int i;
int num = scan.nextInt();
TeacherManagement teac=new TeacherManagement(num);//申请
Teacher []t = new Teacher[num];
for(i=0;i<num;i++) {//读入教师信息
int no = scan.nextInt();
String name = scan.next();
int age = scan.nextInt();
String seminary = scan.next();
t[i] = new Teacher();//set
t[i].setno(no);
t[i].setname(name);
t[i].setage(age);
t[i].setseminary(seminary);
}
teac.add(t);
Arrays.sort(t);
for(i=0;i<t.length;i++) {
System.out.println(t[i].toString());
}
String s1 = scan.next();
teac.search(s1);
int s2 = scan.nextInt();
teac.search(s2);
}
}
class Teacher implements Comparable<Teacher>{//接口
int no;
String name;
int age;
String seminary;
public Teacher(int no,String name,int age,String seminary)
{
this.no=no;
this.name=name;
this.age=age;
this.seminary=seminary;
}
Teacher(){}//无参构造函数
public void setname(String a)//Set
{
name = a;
}
public void setno(int a)//Set
{
no = a;
}
public void setage(int a)//Set
{
age = a;
}
public void setseminary(String a)//Set
{
seminary=a;
}
public String getname()//Get
{
return name;
}
public int getno()//Get
{
return no;
}
public int getage()//Get
{
return age;
}
public String getseminary()//Get
{
return seminary;
}
public boolean equals(Teacher t) {
if(this.no==t.no)
return true;
return false;
}
@Override
public String toString() {
return "no: " + this.no + ", name: " + this.name + ", age: " + this.age + ", seminary: " + this.seminary;
}
@Override
//采用实现Comparable接口重写compareTo方法的方式,让元素自身具备比较性
public int compareTo(Teacher t)
{
if(this.no==t.no)
return 0;
else if(this.no>t.no)
return 1;
else return -1;
}
}
class TeacherManagement{
Teacher []t;//教师数组
int num;
TeacherManagement(int num){ //构造函数
this.num = num;
this.t = new Teacher[num];
}
public void add(Teacher []t){//添加教师
this.t = t;
}
//重载方法
public void search(int age){
int flag = 0;
System.out.println("search by age:");
for(int i=0;i<t.length;i++) {
if(t[i].age==age)
{
flag= 1;
System.out.println(t[i].toString());
}
}
if(flag==0)
System.out.println("no such teacher");
}
public void search(String name){
int flag = 0;
System.out.println("search by name:");
for(int i=0;i<t.length;i++) {
if(t[i].name.equals(name)) {
flag= 1;
System.out.println(t[i].toString());
}
}
if(flag==0)
System.out.println("no such teacher");
}}