5-1编程题

5-1编程题

package com.imooc.seria;
import java.io.Serializable;
public class Produce implements Serializable{
 private String id;
 private String name;
 private double price;
 
 public Produce(String id,String name,double price) {
  this.id=id;
  this.name=name;
  this.price=price;
 }
 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 double getPrice() {
  return price;
 }
 public void setPrice(double price) {
  this.price = price;
 }
 @Override
 public String toString() {
  return "Produce [id=" + id + ", name=" + name + ", price=" + price + "]";
 }
 
 
}
package com.imooc.seria;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
public class Test {
 public static void main (String[] args){
  Produce p1 = new Produce("s0001", "iphone", 5000);
  Produce p2 = new Produce("s0002", "ipad", 4000);
  Produce p3 = new Produce("s0003", "macbook", 3000);
  Produce p4 = new Produce("s0004", "iwatch", 2000);
  try {
   FileOutputStream fos = new FileOutputStream("imooc1.txt");
   ObjectOutputStream oos = new ObjectOutputStream(fos);
   oos.writeObject(p1);
   oos.writeObject(p2);
   oos.writeObject(p3);
   oos.writeObject(p4);
   oos.flush();
   FileInputStream fis = new FileInputStream("imooc1.txt");
   ObjectInputStream ois = new ObjectInputStream(fis);
   List< Produce> produces = new ArrayList<>();
   int n = 0;
   while((n=ois.read())!=-1){
   try {
    produces.add((Produce) ois.readObject());
    
   } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
   }
   for(int i =0;i<produces.size();i++){
   System.out.println(produces);
   }
   fis.close();
   ois.close();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }catch (IOException e) {
   e.printStackTrace();
  }  
 }
}

不能输出四个对象-_-

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

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

3回答
liqihang 2018-03-29 16:28:23

try {
  FileInputStream fis=new FileInputStream("hello.txt");
  ObjectInputStream ois=new ObjectInputStream(fis);
  try {
   Iphone iphone=null;
   while((iphone=(Iphone)ois.readObject())!=null);
   
   System.out.println(iphone);

  • 不可以的噢。可以参考http://class.imooc.com/course/qadetail/26211
    2018-03-29 18:12:45
jarive 2018-01-07 19:28:33

加上for循环就可以了

for (int i = 0; i < 4; i++) {
   Product product = (Product) ois.readObject();
   System.out.println(product);
   System.out.println();
}

一叶知秋519 2017-10-25 11:00:36

可以把数据存储到List中,然后家那个存储数据的List写入文件,读取的时候把List读出来,然后再取出数据。祝学习愉快!

  • try { FileInputStream fis=new FileInputStream("hello.txt"); ObjectInputStream ois=new ObjectInputStream(fis); try { Iphone iphone=null; while((iphone=(Iphone)ois.readObject())!=null); System.out.println(iphone); 老师请问我这样写可以不》?
    2018-03-29 16:28:13
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

在线咨询

领取优惠

免费试听

领取大纲

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