我想用输出语句一次性全部输出,结果出错,只能一次一次输出,为什么?

我想用输出语句一次性全部输出,结果出错,只能一次一次输出,为什么?

package com.imooc.name;


import java.io.Serializable;


public class Product implements Serializable{

private int id;

private String name;

private String categories;

private int price;


public Product() {

super();

}


public Product(int id, String name, String categories, int price) {

super();

this.id = id;

this.name = name;

this.categories = categories;

this.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 getCategories() {

return categories;

}


public void setCategories(String categories) {

this.categories = categories;

}


public int getPrice() {

return price;

}


public void setPrice(int price) {

this.price = price;

}

    public String toString() {

    return ("产品id:"+this.getId()+"\n产品名称:"+this.getName()+"\n产品属性:"+this.getCategories()+"\n产品价格:"+this.getPrice());

    }

}

package com.imooc.name;


import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;


public class Test {


public static void main(String[] args) {

// TODO Auto-generated method stub

        Product iphone=new Product(123,"ipone","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 {

FileOutputStream fi=new FileOutputStream("imooc.txt");

ObjectOutputStream ob=new ObjectOutputStream(fi);

FileInputStream fi1=new FileInputStream("imooc.txt");

ObjectInputStream ob1=new ObjectInputStream(fi1);

ob.writeObject(iphone);

ob.writeObject(ipad);

ob.writeObject(macbook);

ob.writeObject(iwatch);

ob.flush();

try {

Product product=(Product)ob1.readObject();

System.out.println(product);

Product product1=(Product)ob1.readObject();

System.out.println("\n"+product1);

Product product2=(Product)ob1.readObject();

System.out.println("\n"+product2);

Product product3=(Product)ob1.readObject();

System.out.println("\n"+product3);

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}catch (IOException 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();

}

}


}


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

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

3回答
好帮手慕小琪 2020-03-21 11:27:45

同学你好,字符串之间可以用+拼接,对象和对象之间无法直接用加号拼接。

我们可以将输出语句以字符串方式输出,代码如下图:

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

或者可以用for循环输出信息,代码如下图:

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

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

好帮手慕小琪 2020-03-20 20:42:03

同学你好,

1. 测试你的代码是正确的,

关于同学说的输出问题,老师不太理解一次性输出是什么意思,同学可以详细描述一下,老师再给同学解答。

2. close未关闭不会报错,但不关闭会造成占用资源,他会一直占用这个IO流资源,别人再想用这个资源就无法使用,所有一定要记得关闭流。

  • 提问者 慕函数4736799 #1
    我想在一条print里面输出所有的结果,但我用+连接他们后会报错
    2020-03-20 23:26:28
提问者 慕函数4736799 2020-03-20 18:06:09

我好像忘关了,没有close,为什么没出问题

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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