麻烦老师帮忙看一下这个异常怎么解决?

来源:5-3 自由编程

Michael_2020

2020-03-14 21:53:42

结果正常输出了,好像报了一个老师课程中讲的结尾异常?

请老师帮忙看一下其他代码是否合理,谢谢!

package com.yito.product;

import java.io.Serializable;

public class Product implements Serializable {

    private String id;//商品编号
    private String name;//商品名称
    private String categories;//商品属性
    private double price;//商品价格

    //构造方法
    public Product(){

    }
    public Product(String id, String name, String categories, double price){
        this.setId(id);
        this.setName(name);
        this.setCategories(categories);
        this.setPrice(price);
    }

    //set/get
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCategories() {
        return categories;
    }

    public void setCategories(String categories) {
        this.categories = categories;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    //toString

    @Override
    public String toString() {
        return "产品ID:"+this.getId()+'\n'
            +"产品名称:"+this.getName()+'\n'
            +"产品属性:"+this.getCategories()+'\n'
            +"产品价格:"+this.getPrice();
    }
}
package com.yito.product;

import java.io.*;

public class Test {
    public static void main(String[] args) {
        //实现化商品对象并赋值
        Product iphone = new Product("123", "iphone","telephone",4888);
        Product ipad = new Product("234","ipad","computer",5088);
        Product macbook = new Product("345","macbook","computer",10688);
        Product iwatch = new Product("256","iwatch","watch",4799);

        try {
            //创建对象输入输出流
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Product.txt"));
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Product.txt"));

            //将对象信息写入文件
            oos.writeObject(iphone);
            oos.writeObject(ipad);
            oos.writeObject(macbook);
            oos.writeObject(iwatch);
            oos.flush();

            //读取对象信息
            System.out.println("apple系列产品信息:");
            Product product =null;
            while (( product = (Product) ois.readObject())!=null) {
                System.out.println(product);
                System.out.println();
            }

            oos.close();
            ois.close();


        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }
}


写回答

1回答

好帮手慕珊

2020-03-15

同学,你好!读取数据时默认是不能以null作为文件读取结束的标志的,如果想要以null作为标志,那么在写入数据的时候最后写入null就可以了,添加如下所示选中的代码

http://img.mukewang.com/climg/5e6dc2b509ea9b5209960644.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 11489 问题

查看课程