6-1 教师、学生排序(答案)java

原题

作者 孙晨霞

单位 河北农业大学

已知Main类、Person类的设计,完成Student类,Teacher类、MyTool类的设计。

函数接口定义:

class 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两个线性表中。


import 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个人的信息。

5
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

输出样例:

注意:本样例输出结果中两名教师是按照年龄升序排序的,三名学生是按照学号降序排序的。

注:看清升序与降序,在重写compareto的时候注意返回值

Jake2,female,33
Jake1,female,35
Tom3,female,20
Tom2,male,19
Tom1,female,18

 答案

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.major=major;
		this.sno=sno;
	}
	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;
	}
	@Override
	public int compareTo(Object o) {
		Student student1= (Student)o;
		if (this.sno>student1.getSno()) {
			return -1;
		}
		else if (this.sno<student1.getSno()) {
			return 1;
		}
		else {
			return 0;
		}
	}
}
class Teacher extends Person{
	private int tno;
	private String subject;
	public Teacher(int tno,String name,String gender,int age,String subject) {
		super(name, gender, age);
		this.subject = subject;
		this.tno = tno;
	}
	public int getTno() {
		return tno;
	}
	public void setTno(int tno) {
		this.tno = tno;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	@Override
	public int compareTo(Object o) {
		Teacher teacher = (Teacher)o;
		if (this.getAge()>teacher.getAge()) {
			return 1;
		}
		else if (this.getAge()<teacher.getAge()) {
			return -1;
		}
		else {
			return 0;
		}
	}
}
class MyTool{
	public static void separateStu_T(List persons,List teachers,List students){
        for(int i = 0;i<persons.size();i++) {
            if (persons.get(i) instanceof Student) {
                students.add(persons.get(i));
            }
            else if (persons.get(i) instanceof Teacher) {
                teachers.add(persons.get(i));
            }
        }
    }  
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 你好!如果你想统计一段文字中每个单词出现的次数并按照出现次数排序,可以按照以下步骤进行操作: 1. 将文本中的标点符号、空格、换行等字符去除,只保留单词。可以使用正则表达式或字符串的方法来实现。 2. 将每个单词作为字典的key,出现次数作为value,建立一个空字典。 3. 遍历文本中的每个单词,如果这个单词已经在字典中出现过,将对应的value值加1;否则将这个单词加入字典中,value值为1。 4. 使用Python中的内置函数sorted()对字典按照value值进行排序。 5. 遍历排序后的字典,输出每个单词及其出现次数。 下面是一个简单的Python代码示例: ``` import re text = "Hello world, hello python, hello java, hello world." word_dict = {} # 去除标点符号和空格,只保留单词 words = re.findall(r'\b\w+\b', text) # 遍历单词列表,统计每个单词出现的次数 for word in words: if word in word_dict: word_dict[word] += 1 else: word_dict[word] = 1 # 对字典按照value值进行排序 sorted_dict = sorted(word_dict.items(), key=lambda x: x[1], reverse=True) # 遍历排序后的字典,输出每个单词及其出现次数 for item in sorted_dict: print(item[0], item[1]) ``` 输出结果如下: ``` hello 4 world 2 python 1 java 1 ``` ### 回答2: JMU-Java是什么 JMU-Java是一种 Java 程序开发框架,是 James Madison University 的计算机科学系开发的,旨在为 Java 程序开发人员提供高效、便捷的开发工具。JMU-Java 集成了多种 Java 技术,如 JSP、Servlet、Struts、Hibernate、Spring 等,为开发人员提供了丰富的功能和易于扩展的平台。 JMU-Java 的特点 1.易用性 JMU-Java 注重易用性,提供了简单、直观的开发接口,让开发人员能够快速上手,高效开发。 2. 高效性 JMU-Java 提供了多种高效的技术组合,如缓存技术、数据库连接池技术等,可以大大提高程序的运行效率。 3.可扩展性 JMU-Java 可以轻松实现插件化扩展,开发人员可以为 JMU-Java 扩展自己的应用模块,增强 JMU-Java 的功能和灵活性。 4.安全性 JMU-Java 提供了严密的安全机制,保障了应用程序的安全性。 JMU-Java 的应用 JMU-Java 可以广泛应用于 Web 应用开发、企业级应用开发、物联网、大数据等领域。例如,在 Web 应用开发领域, JMU-Java 可以实现 Web 应用程序的快速开发和部署,提供了丰富的 Web 开发特性,如表单处理、会话管理、文件上传、邮件发送等。 总之,JMU-Java 作为一种高效、安全、易扩展的 Java 程序开发框架,为 Java 程序开发人员提供了便捷、高效的开发环境。 ### 回答3: JMU-Java,指的是James Madison University (JMU)的Java课程。JMU是一所位于美国弗吉尼亚州的公立研究型大学,该校设有计算机科学系,在教授编程语言方面拥有雄厚的师资和丰富的教学资源。其中Java是计算机科学系开设的一门主要课程之一。教授这门课程的教师们十分专业,深入浅出地教授Java编程的基础和进阶知识,帮助学生掌握Java编程的核心概念和技能。 JMU-Java的教学内容包括Java编程语言的基础知识、变量、数组、方法、面向对象编程、异常处理、输入输出流、网络编程等方面的知识。学生通过学习这门课程能够掌握Java编程的基本原理和方法,能够使用Java编写简单的控制台程序、图形用户界面程序和网络应用程序等。 JMU-Java的教学目的是为了培养学生的编程思维和编程能力,提高学生的计算机编程技能,拓展学生的计算机科学知识。通过系统学习Java编程,学生将能够更好地理解计算机的工作原理和程序设计的基本思想,掌握解决实际问题的编程方法,增强自己的逻辑思维和创新意识。 总之,JMU-Java是一门极具实用价值的Java编程课程,通过学习这门课程,学生将能够掌握Java编程的基础知识和高级技巧,为自己将来的职业发展奠定坚实的基础。同时,学生也将能够更好地理解计算机科学及其应用领域的相关知识,在未来的工作和学习中更加游刃有余。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值