用Java编写一个student类用来描述学生对象,创建若干学生,将其写入文件;再从文件读出学生信息,展示在屏幕上。
时间: 2024-02-25 11:56:00 浏览: 36
好的,我可以为您解答这个问题。
首先,我们需要定义一个 `Student` 类来描述学生对象。这个类应该包括学生的姓名、年龄、性别、学号等基本信息,我们可以使用以下代码实现:
```java
public class Student implements Serializable {
private String name; // 姓名
private int age; // 年龄
private String gender; // 性别
private String stuNo; // 学号
// 构造方法
public Student(String name, int age, String gender, String stuNo) {
this.name = name;
this.age = age;
this.gender = gender;
this.stuNo = stuNo;
}
// getter 和 setter 方法
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
}
```
接下来,我们可以创建若干个学生对象,并将它们写入文件。我们可以使用 `ObjectOutputStream` 来将学生对象序列化到文件中。以下是一个示例代码:
```java
import java.io.*;
public class Main {
public static void main(String[] args) {
// 创建若干个学生对象
Student stu1 = new Student("张三", 18, "男", "001");
Student stu2 = new Student("李四", 19, "女", "002");
Student stu3 = new Student("王五", 20, "男", "003");
// 将学生对象写入文件
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("students.dat"));
oos.writeObject(stu1);
oos.writeObject(stu2);
oos.writeObject(stu3);
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
最后,我们需要从文件中读出学生信息,并将其展示在屏幕上。我们可以使用 `ObjectInputStream` 来从文件中反序列化出学生对象。以下是一个示例代码:
```java
import java.io.*;
public class Main {
public static void main(String[] args) {
// 读取学生对象
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("students.dat"));
Student stu;
while ((stu = (Student) ois.readObject()) != null) {
System.out.println("姓名:" + stu.getName() + ",年龄:" + stu.getAge() +
",性别:" + stu.getGender() + ",学号:" + stu.getStuNo());
}
ois.close();
} catch (EOFException e) {
// 文件读取结束
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
注意:在 `ObjectInputStream` 的 `readObject()` 方法返回 `null` 之前,我们需要一直循环读取学生对象。