我代码完成了,但是报错了
package wenjian;
import java.io.*;
public class Test {
public static void main(String[] args) {
Wenjian4 wj41=new Wenjian4(123,"iphone","telephone",4888.0);
Wenjian4 wj42=new Wenjian4(234,"ipad","computer",5088.0);
Wenjian4 wj43=new Wenjian4(345,"macbook","computer",106800.);
Wenjian4 wj44=new Wenjian4(456,"iwatch","watch",4799.0);
try {
FileOutputStream fos=new FileOutputStream("immoc");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(wj41);
oos.writeObject(wj42);
oos.writeObject(wj43);
oos.writeObject(wj44);
FileInputStream fis=new FileInputStream("immoc");
ObjectInputStream ois=new ObjectInputStream(fis);
Wenjian4 good;
try {
while((good=(Wenjian4)ois.readObject())!=null) {
System.out.println(good);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package wenjian;
import java.io.*;
public class Wenjian4 implements Serializable{
private int id;
private String name;
private String property;
private double price;
public Wenjian4(int id,String name,String property,double price) {
this.setId(id);
this.setName(name);
this.setProperty(property);
this.setPrice(price);
}
@Override
public String toString() {
return "Wenjian4 [id=" + id + ", name=" + name + ", property=" + property + ", price=" + price + "]";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
正在回答 回答被采纳积分+1
你这个循环语句有问题,记录中有4个产品实例,你是用while循环进行对象读取时候:
第1次,读到的是iphone对象,打印了,此时good变量指向iphone实例;
第2次,读到的是iphone对象,打印了,此时good变量指向ipad实例;
第3次,读到的是iphone对象,打印了,此时good变量指向macbook实例;
第4次,读到的是iphone对象,打印了,此时good变量指向iwatch实例;
然后while循环会继续循环判断good是否为mull,但是此时goods指向iwatch,还会继续读,但是已经没有内容了。所以抛出了End Of File 异常(无法获取更多的可读资源)。
建议可以这样:
System.out.println("apple系列产品信息:");
System.out.println((Wenjian4) ois.readObject() + "\n");
System.out.println((Wenjian4) ois.readObject() + "\n");
System.out.println((Wenjian4) ois.readObject() + "\n");
System.out.println((Wenjian4) ois.readObject() + "\n");
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星