有个类,如下:
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个实例,但赋的值都是最后一个人的信息.请知道怎么做的人把方法的代码写给我看看,或者告诉我做这题的关键在哪里?
谢谢.
解决方案 »
- 键盘事件监视器KeyListener 不可以注册给 JFrame或者其隐含的容器,或者其中的JPane吗?
- 请教:如果不理会异常,用catch(Throwable e){}是否可行?
- 关于jtable的.getCellRenderer(0, 0)的问题,高手来
- 为什么需要被声明为最终类型??
- class Test为何算不出来110的4到7位为0?
- 对于java.sql.clob的一点疑问!
- 求救: 关于java的一些问题
- 为防止INT形的ID 号重复,,需建一HashMap,每次获得该ID号时,先检查一下,MAP中是否包含该INT值,如不包含,刚PUT该值,留下次对比用。
- 迷惑初学者的问题啊~~~~~~~~~~~~~~~~~~~~~~~~~~
- 如何解决swing组件里面显示汉字的问题?
- 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);
}
就不会出现你的说情况了。