有个类,如下:
class Person{
public String name;
public String sex;
public String age;
}有个文件note.txt,内容如下(回车用\n表示):
%n tom\n
%s male\n
%a 18\n
\n
%n mike\n
%s male\n
%a \n
\n
%n mary\n
%a 19\n
%s female\n
\n
这个文件的特点是记录每个人的三种信息,三种信息的排列没有规律(可能是name,sex,age也可能是name,age,sex),但是每个人的信息结束后,都有一个回车符.而且每个人的信息不一定是完整的,如上面的mike没有age信息.现在要写一个方法
public List<Person> getPerson(File f){}
即读入文件note.txt,返回一个List,List中应该含有Person类的3个实例,每个实例都要根据文件的内容被赋好相应的值,如果文件中没有对应的值则给该变量赋null.我做的结果有问题,虽然返回了3个实例,但赋的值都是最后一个人的信息.请知道怎么做的人把方法的代码写给我看看,或者告诉我做这题的关键在哪里?
谢谢.
class Person{
public String name;
public String sex;
public String age;
}有个文件note.txt,内容如下(回车用\n表示):
%n tom\n
%s male\n
%a 18\n
\n
%n mike\n
%s male\n
%a \n
\n
%n mary\n
%a 19\n
%s female\n
\n
这个文件的特点是记录每个人的三种信息,三种信息的排列没有规律(可能是name,sex,age也可能是name,age,sex),但是每个人的信息结束后,都有一个回车符.而且每个人的信息不一定是完整的,如上面的mike没有age信息.现在要写一个方法
public List<Person> getPerson(File f){}
即读入文件note.txt,返回一个List,List中应该含有Person类的3个实例,每个实例都要根据文件的内容被赋好相应的值,如果文件中没有对应的值则给该变量赋null.我做的结果有问题,虽然返回了3个实例,但赋的值都是最后一个人的信息.请知道怎么做的人把方法的代码写给我看看,或者告诉我做这题的关键在哪里?
谢谢.
解决方案 »
- 求修改一段语句
- ubuntu只有管理员帐户如何登录
- 编译时出现cannot access JPanel错误
- 说说你的理解----面向对象的本质是什么?封装,继承,多态是到底用来做什么的?
- 面对对象简单题目,大家帮我看看
- 如何制作删除信息的动态网页
- 请教大侠索引程序
- 问一个概念性的问题,Java2 platform意义上是指什么?
- 实现我的诺言,散分,主要回答人如下:wjmmml(笑着悲伤),xmvigour(微电--有狼的气质 没狼的勇气 真郁闷),sharetop(燕赤霞),piggybank(
- 写了一个很简单的关于FileWriter类的测试程序,但是没有达到效果,有空帮我看看吧!
- CString 如何转换为Date?
- 我是个新人,请问JAVA中有没有像VC中MFC这样做窗口的工具集啊?
比如:
Person p=new Person();
java.util.List list=new java.util.ArrayList();
//读取文件,循环取出其中的所有person数据进行赋值
while(condition)
{
//对p赋值
p.setName();
p.setSex();
p.setAge();
list.add(p);
}
你的代码结构肯定是这样的,所以才会造成你list中所有的persion对象的值都是最后一个的值,因为你始终改变的是一个person对象的值,list的add操作是针对对象地址的,事实上你只是反复的添加一个p对象,而这个p对象的值在每次循环的时候都在被改变。应该改成下面的结构:java.util.List list=new java.util.ArrayList();
//读取文件,循环取出其中的所有person数据进行赋值
while(condition)
{
Person p=new Person();
//对p赋值
p.setName();
p.setSex();
p.setAge();
list.add(p);
}
就不会出现你的说情况了。