Java中输入学生信息,传到文件中,再从文件 中读取,EOFException,invalid type code: AC解决办法

54 篇文章 0 订阅
10 篇文章 0 订阅

标题:Java中输入学生信息,传到文件中,再从文件 中读取,EOFException,invalid type code: AC解决办法

1.使用ObjectOutputStream,Student需要序列化,也就是implements Serializable接口
2.Java中实现排序的视频:添加链接描述
3.Java中scanner视频:添加链接描述
4.Java中流的视频:添加链接描述
p116,看完就会了,
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
完整代码:

package com.sxt.io3;

import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Test2018T {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        System.out.println("输入4位同学的成绩:");
        Scanner scanner = new Scanner(System.in);
        int i = 1;

        ObjectOutputStream oos = null;
        //1.创建源 使用对象流 需要序列化
        //2.选择流
        oos = new ObjectOutputStream(new FileOutputStream("cx.txt",true));
        while(i <= 4){
            System.out.println("输入第"+ i +" 位同学的姓名:");
            String name = scanner.next();
            System.out.println("输入第"+ i +" 位同学的age:");
            int age = scanner.nextInt();
            System.out.println("输入第"+ i +" 位同学的grade:");
            double grade = scanner.nextDouble();
            i++;

            //3.操作
            oos.writeObject(new Student(name,age,grade));
            oos.flush();
            //4.关闭
        }
        oos.close();

//        //1.创建源 使用对象流 需要序列化
//        //2.选择流
//        oos = new ObjectOutputStream(new FileOutputStream("cx.txt"));
//        //3.操作
//        oos.writeObject(new Student("aaa",18,500));
//        oos.writeObject(new Student("bbb",18,380));
//        oos.writeObject(new Student("acaa",18,560));
//        oos.writeObject(new Student("aada",18,400));
//        oos.flush();
//        //4.关闭
//        oos.close();

        //读取
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("cx.txt"));
        Student[] students = new Student[4];
        i = 0;

//        while(true){
//            try{
//                students[i++] = (Student) ois.readObject();
//            }catch (EOFException e){
//                break;
//            }
//        }
//        ois.close();

        while(i < 4){
            students[i++] = (Student) ois.readObject();
        }
        ois.close();

        for (Student student : students) {
            System.out.println(student);
        }


        //排序
        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student student, Student t1) {
                if(student.getGrade() > t1.getGrade()){
                    return -1;
                }else if(student.getGrade() < t1.getGrade()){
                    return 1;
                }
                return 0;
            }
        });

        for (Student student : students) {
            System.out.println(student);
        }

    }
}
class Student implements Serializable {
    private String name;
    private int age;
    private double grade;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", grade=" + grade +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getGrade() {
        return grade;
    }

    public void setGrade(double grade) {
        this.grade = grade;
    }

    public Student(String name, int age, double grade) {
        this.name = name;
        this.age = age;
        this.grade = grade;
    }
}


排序:
在这里插入图片描述在这里插入图片描述scanner:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值