6-1 教师、学生排序 (30 分)
已知Main类、Person类的设计,完成Student类,Teacher类、MyTool类的设计。
函数接口定义:
复制代码
1
2
3class Student extends Person{ } class Teacher extends Person{ }
class MyTool{ public static void separateStu_T(List persons,List teachers,List students){} }
Student类继承了Person,拥有私有属性int类型的sno和String类型的major,分别代表学号与所学专业;提供对应的set,get方法;比较方法完成按照学号比较。
Teacher类继承了Person,拥有私有属性int类型的tno和String类型的subject,分别代表教师编号与所授科目;提供对应的set,get方法;比较方法完成按年龄比较。
MyTool类中提供方法public static void separateStu_T(List persons,List teachers,List students){},方法 separateStu_T的功能是将persons线性表中的 teacher,student分别放到teachers,students两个线性表中。
裁判测试程序样例:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77import java.util.*; public class Main { public static void main(String[] args) { List persons=getPersons(); //得到一个所有人的线性表 List teachers=new ArrayList(); List students=new ArrayList(); MyTool.separateStu_T( persons,teachers,students); //将persons线性表中的 teacher,student分别放到teachers,students两个线性表中 Collections.sort(teachers); //对教师线性表排序 Collections.sort(students); //对学生线性表排序 showResult(teachers); //显示教师线性表排序以后的结果 showResult(students); //显示学生线性表排序以后的结果 } public static List getPersons() { List persons=new ArrayList(); Scanner in=new Scanner(System.in); Person person=null; int num=Integer.parseInt(in.nextLine()); for(int i=0;i<num;i++) { String str=in.nextLine(); String []data=str.split(","); if(data[0].equalsIgnoreCase("student")) person=new Student(Integer.parseInt(data[1]),data[2],data[3],Integer.parseInt(data[4]),data[5]); else if (data[0].equalsIgnoreCase("teacher")) person=new Teacher(Integer.parseInt(data[1]),data[2],data[3],Integer.parseInt(data[4]),data[5]); else person=null; persons.add(person); } return persons; } public static void showResult(List persons) { for(int i=0;i<persons.size();i++) { Person per=(Person)persons.get(i); System.out.println(per.getName()+","+per.getGender()+","+per.getAge()); } } } abstract class Person implements Comparable { private String name; private String gender; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person(String name, String gender, int age) { super(); this.name = name; this.gender = gender; this.age = age; } } /* 请在这里写你的代码 */
输入样例:
输入的第一行是总人数n,紧跟着输入n行,每一行代表一个人的信息。下面的例子中n=5,输入了5个人的信息。
复制代码
1
2
3
4
5
6
75 student,1001,Tom1,female,18,computer teacher,2001,Jake1,female,35,datastructer student,1002,Tom2,male,19,computer student,1003,Tom3,female,20,software teacher,2002,Jake2,female,33,database
输出样例:
注意:本样例输出结果中两名教师是按照年龄升序排序的,三名学生是按照学号降序排序的。
复制代码
1
2
3
4
5
6Jake2,female,33 Jake1,female,35 Tom3,female,20 Tom2,male,19 Tom1,female,18
参考答案
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57class MyTool{ public static void separateStu_T(List persons,List teachers,List students){ Iterator It = persons.iterator(); while( It.hasNext()){ Person p= (Person) It.next(); if(p instanceof Teacher){ teachers.add((Teacher)(p)); } else{// if( It.next() instanceof Student){ students.add((Student)(p)); } } } } class Student extends Person{ private int sno; private String major; public Student(int sno, String name, String gender, int age, String major) { super(name, gender, age); this.sno = sno; this.major = major; // TODO Auto-generated constructor stub } @Override public int compareTo(Object arg0) { // TODO Auto-generated method stub return -(this.sno - ((Student)arg0).getSno()); } public int getSno() { return sno; } public void setSno(int sno) { this.sno = sno; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } } class Teacher extends Person{ private int ton; private String subject; public Teacher(int tno, String name, String gender, int age, String sub) { super(name, gender, age); this.ton = ton; this.subject = sub; // TODO Auto-generated constructor stub } @Override public int compareTo(Object arg0) { // TODO Auto-generated method stub return this.getAge() - ((Teacher)arg0).getAge(); } }
最后
以上就是温暖黑夜最近收集整理的关于6-1 教师、学生排序 (30 分)的全部内容,更多相关6-1内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复