设计一个学生类,将n个学生对象的基本信息(姓名、身高、年龄)以二进制流的形式写入文件中,并将写入的文件信息在屏幕上进行随机显示。
时间: 2023-04-28 22:01:40 浏览: 64
设计一个学生类,包含姓名、身高、年龄三个基本信息属性。然后,将n个学生对象的基本信息以二进制流的形式写入文件中。可以使用Java中的ObjectOutputStream类来实现。具体步骤如下:
1. 创建一个学生类,包含姓名、身高、年龄三个属性,并提供相应的getter和setter方法。
2. 创建一个写入文件的方法,将学生对象以二进制流的形式写入文件中。可以使用ObjectOutputStream类来实现。
3. 在主函数中,创建n个学生对象,并调用写入文件的方法将学生对象写入文件中。
4. 创建一个随机显示文件信息的方法,从文件中读取学生对象的二进制流,并将其转换为学生对象,然后随机显示其中一个学生对象的基本信息。可以使用ObjectInputStream类来实现。
5. 在主函数中,调用随机显示文件信息的方法,从文件中读取学生对象的二进制流,并随机显示其中一个学生对象的基本信息。
代码示例:
```
import java.io.*;
import java.util.*;
class Student implements Serializable {
private String name;
private int height;
private int age;
public Student(String name, int height, int age) {
this.name = name;
this.height = height;
this.age = age;
}
public String getName() {
return name;
}
public int getHeight() {
return height;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setHeight(int height) {
this.height = height;
}
public void setAge(int age) {
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
int n = 3; // 学生数量
// 创建n个学生对象
Student[] students = new Student[n];
students[] = new Student("张三", 170, 20);
students[1] = new Student("李四", 175, 21);
students[2] = new Student("王五", 180, 22);
// 将学生对象写入文件中
writeToFile(students);
// 随机显示文件信息
displayRandomStudent();
}
// 将学生对象以二进制流的形式写入文件中
public static void writeToFile(Student[] students) {
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("students.dat"));
for (int i = ; i < students.length; i++) {
out.writeObject(students[i]);
}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 从文件中读取学生对象的二进制流,并随机显示其中一个学生对象的基本信息
public static void displayRandomStudent() {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("students.dat"));
Random random = new Random();
int index = random.nextInt(3); // 随机选择一个学生对象
for (int i = ; i <= index; i++) {
Student student = (Student) in.readObject();
if (i == index) {
System.out.println("姓名:" + student.getName() + ",身高:" + student.getHeight() + ",年龄:" + student.getAge());
}
}
in.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```