0

我创建了一个带有 3 个按钮和 1 个文本字段的小程序供用户输入。程序所做的是,它从用户那里获取输入并将其存储到一个数组列表中,然后当第二个按钮被按下时,它应该将数组列表写入文件。当第三个按钮被按下时,它应该从文件中读入一个数组列表。

我的问题是只得到第一条记录,这意味着如果我输入 2 个名字,当我按下第三个按钮时,我只会显示第一个名字。这是我所做的:

贴花 2 个数组列表。

 ArrayList<Person>list=new ArrayList<Person>()                                  ArrayList<Person>list2=new ArrayList<Person>();

按下时接受用户输入的按钮

   String firstname=txtname.getText();

   Person p1=new Person(firstname,"pamodya","15","08","1995");

    list.add(p1);

将第一个 arraylist 对象写入文件的按钮。尝试{

        FileOutputStream write=new FileOutputStream("hello.txt");
        ObjectOutputStream writeFile=new ObjectOutputStream(write);

       writeFile.writeObject(list);
      writeFile.flush();
     writeFile.close();

       }catch(Exception e){e.getMessage();}

从文件中读取并在按下时打印到文本区域的按钮。

 try{
            FileInputStream read=new FileInputStream("hello.txt");
           ObjectInputStream readFile=new ObjectInputStream(read);


           Person p1=(Person)readFile.readObject();

          list2.add(p1);

          readFile.close();

          txtarea.setText(p1.getName());


    }catch(Exception e){e.getMessage();}

这里似乎有什么问题?感谢您的时间。

编辑 :

这是错误

在此处输入图像描述

4

3 回答 3

1

您正在编写 alist但正在阅读 a Person。你应该得到一个ClassCastException给定的代码。

比较这两个:

 writeFile.writeObject(list);
 Person p1=(Person)readFile.readObject();

你应该使用:

 List<Person> outList=(List)readFile.readObject();
 list2.addAll(outList);
于 2013-08-18T09:58:15.393 回答
1

恕我直言,在我看来,您没有在第三个按钮上循环浏览任何结果。您只需获取找到的第一个结果并显示它。

于 2013-08-18T10:01:24.450 回答
1

以下是要确保的事项列表:

1) 你的 Person 类是可序列化的吗?2)当您打开文件时,您是否打开它进行附加?3)我注意到你写了列表对象。但是您阅读了 Person 对象。

于 2013-08-18T10:02:25.387 回答