从键盘中输入姓名,语文、英语、数学、历史的成绩然后填充至Student型对象中,单科分数如果未输入以0分计算,姓名未输入提示重新输入姓名,将所输入的信息存入到文件。
文件名称:students.dat
使用的流:ObjectOutputStreamclass Student{
String name;
int[] record=new int[4];
int tatal;
foalt avg;
String grade;
//定义构造函数
//get()、set()方法定义
//定义返回总分,平均分。学分的方法
}90-100  学分:A
80-89         B
70-79         C
60-69         D
0-59          E运行结果提示:
请顺序输入姓名、语文、英语、数学、历史的成绩(end输入完毕)
比如:刘备 100  90  90  89
关羽 90   100 80  90
张飞 90   90  80  98
曹操 80   98  78  90
end文件的内容
Student型对象1(名字,语文,英语,数学,历史,总分,平均分,学分)
Student型对象2(名字,语文,英语,数学,历史,总分,平均分,学分)
Student型对象3(名字,语文,英语,数学,历史,总分,平均分,学分)
Student型对象4(名字,语文,英语,数学,历史,总分,平均分,学分).....

解决方案 »

  1.   

    我写的,供你参考:import java.io.*;public class Students { public static void main(String[] args) throws IOException {

    Student[] students = new Student[4];

    students[0] = new Student("刘备", new int[] {100, 90, 90, 89});
    students[1] = new Student("关羽", new int[] {90, 100, 80, 90});
    students[2] = new Student("张飞", new int[] {90, 90, 80, 98});
    //另一种方式初始化
    students[3] = new Student("曹操");
    students[3].setScores(new int[] {80, 98, 78, 90});

    //写入文件
    ObjectOutputStream data = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("D:/students.dat")));
    for (int i = 0; i < students.length; i++)
    data.writeObject(students[i]);
    data.close();

    //读取数据
    ObjectInputStream out = new ObjectInputStream(new BufferedInputStream(new FileInputStream("D:/students.dat")));
    try {
    while(true)
    System.out.println((Student)out.readObject());
    } catch (EOFException e) {
    return;
    } catch (Exception e) {
    System.out.println("Error occured when reading data.");
    } finally {
    out.close();
    }
    }
    }class Student implements Serializable { public static final int SUBJECT_COUNT = 4; private String name;
    private int[] record = new int[SUBJECT_COUNT]; public Student(String n) {
    name = n;
    }

    public Student(String n, int[] scores) {
    this(n);
    setScores(scores);
    } public void setScores(int[] scores) {
    System.arraycopy(scores, 0, record, 0, SUBJECT_COUNT);
    } public String getName() {
    return name;
    } public int[] getScores() {
    return record;
    } public int getTotal() {
    int sum = 0;
    for (int i = 0; i < record.length; i++)
    sum += record[i];
    return sum;
    } public int getAverage() {
    return getTotal() / SUBJECT_COUNT;
    } public char getGrade() {
    int avg = getAverage();
    if (avg <= 100 && avg >= 90)
    return 'A';
    else if (avg < 90 && avg >= 80)
    return 'B';
    else if (avg < 80 && avg >= 70)
    return 'C';
    else if (avg < 70 && avg >= 60)
    return 'D';
    else
    return 'E';
    }

    public String toString() {
    StringBuffer result = new StringBuffer(getName() + ": ");
    for (int i = 0; i < SUBJECT_COUNT; i++) {
    if(i > 0) result.append(", ");
    result.append(record[i]);
    }
    result.append(" total: " + getTotal() + " avg: " + getAverage() + " grade: " + getGrade());
    return result.toString(); 
    }
    }