我代码完成了,但是报错了

我代码完成了,但是报错了

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;

}

   

   

   

   

   

}

http://img1.sycdn.imooc.com//climg/5befc9a80001bef008360164.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
龍彦宏 2018-12-11 11:54:28

oos.writeObject(null);//插入null是用来判断是否读取到结尾!!!

加入后你再试试就知道了!一定要注意逻辑.

wemooc 2018-11-18 01:29:20

http://img1.sycdn.imooc.com//climg/5bf04dde00010f1506370363.jpg

你这个循环语句有问题,记录中有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");


  • wemooc #1
    上面写错了。不好意思,老哥 第1次,读到的是iphone对象,打印了,此时good变量指向iphone实例; 第2次,读到的是ipad对象,打印了,此时good变量指向ipad实例; 第3次,读到的是macbook对象,打印了,此时good变量指向macbook实例; 第4次,读到的是iwatch对象,打印了,此时good变量指向iwatch实例;
    2018-11-18 01:31:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师