前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java对象输入输出流及比较器

Java对象输入输出流及比较器

作者头像
魚迹
发布2023-05-06 21:24:47
2790
发布2023-05-06 21:24:47
举报

题目描述:

1、采用对象输入输出流 2、自定义文件,存放某班级学生期末各科考试原始成绩 3、读取上述原始成绩文件,采用比较器按照某门课程分数高低排序

代码实现如下所示

代码语言:javascript
复制
package testOne;
import java.io.Serializable;
public class Student implements Serializable{
	private String Sid;
	private String Sname;
	private String Cname;
	private int Grade;
	
	public Student(String sid, String sname, String cname, int grade) {
		super();
		Sid = sid;
		Sname = sname;
		Cname = cname;
		Grade = grade;
	}
	public String getSid() {
		return Sid;
	}
	public void setSid(String sid) {
		Sid = sid;
	}
	public String getSname() {
		return Sname;
	}
	public void setSname(String sname) {
		Sname = sname;
	}
	public String getCname() {
		return Cname;
	}
	public void setCname(String cname) {
		Cname = cname;
	}
	public int getGrade() {
		return Grade;
	}
	public void setGrade(int grade) {
		Grade = grade;
	}
	@Override
	public String toString() {
		return "[学号=" + Sid + ", 姓名=" + Sname + ", 课程=" + Cname + ", 成绩=" + Grade + "]";
	}
	
}




package testOne;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class FileUtil {

	public void saveStudent(ArrayList<Student>students) {
		try (ObjectOutputStream obs=new ObjectOutputStream(new FileOutputStream("Student.txt",true))){
			for(Student stu:students) {
				if(stu!=null) {
					obs.writeObject(stu);
					obs.flush();
				}
			}
			
			 obs.writeObject(null);
			 obs.flush();

		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
	}
	
	public ArrayList<Student> readStudent(){
		ArrayList<Student>students1=new ArrayList<>();
		try (ObjectInputStream ois=new ObjectInputStream(new FileInputStream("Student.txt"))){
			Student student;
			while((student=(Student) ois.readObject())!=null) {
			students1.add(student);
		       
			}
		
				
			
			ois.close();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return students1;
	}

}



package testOne;

import java.util.ArrayList;
import java.util.Comparator;

public class Test {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		 FileUtil fileUtil1=new FileUtil();
		 ArrayList<Student>students=new ArrayList<>(); 
		 System.out.println("开始存学生信息");
		 for(int i=0;i<10;i++) {
		     if(i%2==0) { 
		    	 students.add(new Student("1210"+i, "张"+i, "java程序设计", 70+2*i));
		 } else {
			 students.add(new Student("3211"+i, "张"+i, "java程序设计", 70-i));
			 }
		 
		 } 
		 fileUtil1.saveStudent(students);
		 for(Student stu:students) {
		 System.out.println(stu); } System.out.println("根据成绩排序");
		 
		FileUtil fileUtil2=new FileUtil();
		ArrayList<Student>students2=fileUtil2.readStudent();
		students2.sort(new Comparator<Student>() {
			public int compare(Student stu1,Student stu2) {
				int num=-(stu1.getGrade()-stu2.getGrade());
				int num1=num==0?stu1.getSname().compareTo(stu2.getSname()):num;
				return num1;
			}
		});
		int count=0,j=1;
		for(Student stu1:students2) {
			if(stu1.getGrade()<70) {
				count++;
			}
			System.out.println("学生"+j+stu1);
			j++;
		}
		System.out.println("有"+count+"名学生成绩低于70分");
	}

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档