题目:
Person类(抽象类):
属性:int id, String name, LocalDate birthDate。
方法:构造方法(id, name, year, month, dayOfMonth); id与birthDate的getter方法; name的getter/setter方法; 抽象方法String getPersonInfo(),该方法之所以声明为抽象是因为其在子类返回的信息与子类特有属性相关。
Student类继承自Person类:
属性:int enrollmentYear, String clazzName。
方法:构造方法(id, name, year, month, dayOfMonth, enrollmentYear, clazzName),建议使用super复用Person的构造方法;
覆盖父类的 getPersonInfo()方法,返回"Student-enrollmentYear-name"
Teacher类继承自Person:
属性:String department, double salary。
方法:构造方法(id, name, year, month, dayOfMonth, department, salary),建议使用super复用Person的构造方法;
覆盖父类的 getPersonInfo()方法,返回"Teacher-department-name"
main方法包含:
输入 :
产生n个对象
如果要生成Student对象则依次输入:姓名 年 月 日 入学年份 班级
如果要生成Teacher对象则依次输入:姓名 年 月 日 系 薪水
输出 :
学生人数,教师人数
n个对象getPersonNumber
输入样例:
6
Liz 1986 10 10 CS 2000
Tom 1978 5 7 CS 2500.5
Sally 2000 1 3 2018 Net01
Jerry 1988 6 7 Mechanical 1990
Eliza 2001 2 5 2019 Software02
Li 1978 5 7 cs 2400
输出样例:
Teacher 4人
Student 2人
Teacher-CS-Liz
Teacher-CS-Tom
Student-2018-Sally
Teacher-Mechanical-Jerry
Student-2019-Eliza
Teacher-cs-Li
package com.experiment.twoT1;
import java.time.LocalDate;
public abstract class Person {
protected int id;
protected String name;
protected LocalDate birthDate;
public Person(){
this.id=0;
this.name="NULL";
this.birthDate = LocalDate.of(2023, 4, 11);
}
public Person(int id,String name,int year,int month,int dayOfMonth){
this.id=id;
this.name=name;
this.birthDate = LocalDate.of(year, month, dayOfMonth);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract String getPersonInfo();
}
package com.experiment.twoT1;
public class Student extends Person{
private int enrollmentYear;
private String clazzName;
public Student(){
super();
this.enrollmentYear=2022;
this.clazzName="NULL";
}
public Student(int id,String name,int year,int month,int dayOfMonth,int enrollmentYear,String clazzName){
super(id,name,year,month,dayOfMonth);
this.enrollmentYear=enrollmentYear;
this.clazzName=clazzName;
}
public String getPersonInfo(){
return "Student-"+this.enrollmentYear+"-"+this.name;
}
}
package com.experiment.twoT1;
public class Teacher extends Person{
private String department;
private double salary;
public Teacher(){
super();
this.department="NULL";
this.salary=0;
}
public Teacher(int id,String name,int year,int month,int dayOfMonth,String department,double salary){
super(id, name, year, month, dayOfMonth);
this.department=department;
this.salary=salary;
}
public String getPersonInfo(){
return "Teacher-"+this.department+"-"+this.name;
}
}
package com.experiment.twoT1;
import java.util.Scanner;
/*import java.util.regex.Matcher;
import java.util.regex.Pattern;*/
public class test {
public static void main(String[] args) {
int i;
int studentNumber=0;
int teacherNumber=0;
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] message = new String[n];
message[0] = sc.nextLine();
for (i = 0; i < n; i++) {
message[i] = sc.nextLine();
if (Character.isLetter(message[i].charAt(message[i].length() - 3))) studentNumber++;
else teacherNumber++;
if(i==n-1){
System.out.println("Teacher "+teacherNumber+"人");
System.out.println("Student "+studentNumber+"人");
}
}
for (i = 0; i < n; i++) {
if (Character.isLetter(message[i].charAt(message[i].length() - 3))) {
String[] str1 = message[i].split(" "); //将字符串按照空格区分,存放进str数组中
/*if(Character.isLetter(str[i].charAt(i))){
String regEx = "[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str[i]);
String[] result=new String[5];
result[i] = m.replaceAll("").trim();
result[i]=(int)result[i];
}*/
Student stu=new Student(0, str1[0], Integer.parseInt(str1[1]), Integer.parseInt(str1[2]), Integer.parseInt(str1[3]),Integer.parseInt(str1[4]),str1[5]);
System.out.println(stu.getPersonInfo());
//将字符串转化为数字
//System.out.println(getPersonNumber(Integer.parseInt(str1[0]), str1[1], Integer.parseInt(str1[2]), Integer.parseInt(str1[3]), Integer.parseInt(str1[4]), Integer.parseInt(str1[5]), str1[6]));
}
else{
String[] str2 = message[i].split(" ");
Teacher tea=new Teacher(0,str2[0], Integer.parseInt(str2[1]), Integer.parseInt(str2[2]), Integer.parseInt(str2[3]), str2[4],Double.parseDouble(str2[5]));
System.out.println(tea.getPersonInfo());
//System.out.println(getPersonNumber(Integer.parseInt(str2[0]), str2[1], Integer.parseInt(str2[2]), Integer.parseInt(str2[3]), Integer.parseInt(str2[4]), str2[5], Double.parseDouble(str2[6])));
}
}
}
/*public static String getPersonNumber(int id,String name,int year,int month,int dayOfMonth,int enrollmentYear,String clazzName){
Student stu=new Student(id,name,year,month,dayOfMonth,enrollmentYear,clazzName);
return stu.getPersonInfo();
}
public static String getPersonNumber(int id,String name,int year,int month,int dayOfMonth,String department,double salary){
Teacher tea=new Teacher(id,name,year,month,dayOfMonth,department,salary);
return tea.getPersonInfo();
}*/
}
刚入门写的,肯定是有很多地方比学完了整本书再写要啰嗦一点,所以仅供参考
改进:test那里可以用arraylist集合框架,就不用这么多for循环了