写一个 Java 程序,主要功能是创建一个包含学生信息的列表,并根据学生的数学成绩、年龄和出生日期进行筛选和输出。下面是对代码的分析:
创建学生列表:
代码首先创建了一个 ArrayList 对象 studentList,用于存储 Student 对象的列表。然后使用 SimpleDateFormat 对象 sdf 解析日期字符串,并向 studentList 中添加了若干个 Student 对象,每个对象代表一个学生的信息。
筛选学生信息:
接下来创建了三个空的 ArrayList 对象 studentListMath、studentListAge 和 studentListBirth,用于存储符合条件的学生信息。然后使用循环遍历 studentList 中的每个学生对象,根据数学成绩、年龄和出生日期进行筛选,并将符合条件的学生信息分别存储到对应的列表中。
输出筛选结果:
最后,循环遍历输出了符合条件的学生信息。分别输出数学成绩大于80的学生、年龄大于18的学生以及出生日期在2000-05-20后的学生的信息。
分析:
对于数学成绩的筛选,可以使用了 BigDecimal 类的 compareTo 方法进行比较。
对于年龄和出生日期的筛选,可以使用了普通的比较操作符(>、after)进行判断。
package Collection.Work1.Test1;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
package Collection.Work1.Test1;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Demo2 {
public static void main(String[] args) throws ParseException {
List<Student> studentList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
studentList.add(new Student("aa0", 22, sdf.parse("2023-11-11"), new BigDecimal(98), new BigDecimal(97), new BigDecimal(96)));
studentList.add(new Student("aa1", 32, sdf.parse("2003-11-11"), new BigDecimal(88), new BigDecimal(87), new BigDecimal(86)));
studentList.add(new Student("aa2", 12, sdf.parse("2013-11-11"), new BigDecimal(70), new BigDecimal(77), new BigDecimal(76)));
studentList.add(new Student("aa3", 42, sdf.parse("2023-10-11"), new BigDecimal(60), new BigDecimal(67), new BigDecimal(66)));
studentList.add(new Student("aa4", 12, sdf.parse("1963-12-11"), new BigDecimal(50), new BigDecimal(57), new BigDecimal(56)));
studentList.add(new Student("aa5", 12, sdf.parse("1973-01-11"), new BigDecimal(40), new BigDecimal(47), new BigDecimal(46)));
studentList.add(new Student("aa6", 12, sdf.parse("1693-11-11"), new BigDecimal(30), new BigDecimal(37), new BigDecimal(36)));
studentList.add(new Student("aa7", 12, sdf.parse("1977-10-11"), new BigDecimal(28), new BigDecimal(27), new BigDecimal(26)));
studentList.add(new Student("aa8", 82, sdf.parse("2000-10-11"), new BigDecimal(99), new BigDecimal(27), new BigDecimal(26)));
List<Student> studentListMath = new ArrayList<>();
List<Student> studentListAge = new ArrayList<>();
List<Student> studentListBirth = new ArrayList<>();
BigDecimal math80 = new BigDecimal(80);
Date date2000 = sdf.parse("2000-05-20");
for (Student student : studentList) {
BigDecimal math1 = student.getMath();
//找出大于80分的student
if (math1.compareTo(math80) > 0) { //大于0 第一个比第二大
studentListMath.add(student);
}
//找出年龄大于18的student
if (student.getAge() > 18) {
studentListAge.add(student);
}
//找出出生年月大于2000-05-20的student
if (student.getBirth().after(date2000)) { //after 之后,before之前
studentListBirth.add(student);
}
}
System.out.print("数学成绩大于80的人有: " + studentListMath.size() + "位,分别是:");
for (Student student : studentListMath) {
System.out.print(student.getName() + "成绩为:" + student.getMath() + " ");
}
System.out.println();
System.out.print("年龄大于18的人有: " + studentListAge.size() + "位,分别是:");
for (Student student : studentListAge) {
System.out.print(student.getName() + "年龄为:" + student.getAge() + " ");
}
System.out.println();
System.out.print("出生年纪在2000-05-20后的人有: " + studentListBirth.size() + "位,分别是:");
for (Student student : studentListBirth) {
System.out.print(student.getName() + "出生时间为:" + sdf.format(student.getBirth()) + " ");
}
}
}
- package Collection.Work1.Test1;
import java.math.BigDecimal;
import java.util.Date;
public class Student {
private String name;
private Integer age;
private Date birth;
private BigDecimal math;
private BigDecimal chinese;
private BigDecimal englisth;
public Student() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public BigDecimal getMath() {
return math;
}
public void setMath(BigDecimal math) {
this.math = math;
}
public BigDecimal getChinese() {
return chinese;
}
public void setChinese(BigDecimal chinese) {
this.chinese = chinese;
}
public BigDecimal getEnglisth() {
return englisth;
}
public void setEnglisth(BigDecimal englisth) {
this.englisth = englisth;
}
public Student(String name, Integer age, Date birth, BigDecimal math, BigDecimal chinese, BigDecimal englisth) {
this.name = name;
this.age = age;
this.birth = birth;
this.math = math;
this.chinese = chinese;
this.englisth = englisth;
}
}