我正在寻找有关我的代码的帮助。我希望程序从读取。txt文件,创建一个动物对象,并根据文件中找到的数据将其插入动物对象的ArrayList中,前提是文件中的数据格式正确。
我创建了一个计数器来跟踪行号。因为我知道数据是如何在。txt文件已格式化,我可以预测一个动物对象的开始位置和另一个对象的结束位置。
我经常遇到的问题是ArrayList中的动物对象与文本文件中的最后一个动物具有相同的字段。非常感谢您的任何帮助。
BufferedReader userInputFile = null;
int ctr = 1;
try {
userInputFile = new BufferedReader(new FileReader(userDocFilePath));
Animal newFileAnimal = new Animal();
while((s = userInputFile.readLine()) != null) {
if (ctr == 1){
newFileAnimal.setName(s);
ctr++;
} else if (ctr == 2) {
newFileAnimal.setSpineStatus(s);
ctr++;
} else if (ctr == 3) {
newFileAnimal.setFurStatus(s);
ctr++;
} else if (ctr == 4) {
newFileAnimal.setSwimStatus(s);
System.out.printf("Animal name: %s\n\tSpine status: %s\n\t"
+ "Fur status: %s\n\tSwim status: %s\n", Animal.getName(),
+ newFileAnimal.getSpineStatus(),
+ newFileAnimal.getFurStatus(),
+ newFileAnimal.getSwimStatus());
array.add(newFileAnimal);
ctr = 1;
}
}
文本文件如下所示:
Rabbit
true
true
true
Duck
true
false
true
如果我正确理解了您的问题。您在ArrayList中得到以下结果:
Duck
true
false
true
Duck
true
false
true
如果是这种情况,则需要在while循环中移动动物对象初始化。
userInputFile = new BufferedReader(new FileReader(userDocFilePath));
Animal newFileAnimal = null;
while((s = userInputFile.readLine()) != null) {
newFileAnimal = new Animal();
if (ctr == 1){
newFileAnimal.setName(s);
ctr++;
} else if (ctr == 2) {
newFileAnimal.setSpineStatus(s);
ctr++;
} else if (ctr == 3) {
newFileAnimal.setFurStatus(s);
ctr++;
} else if (ctr == 4) {
newFileAnimal.setSwimStatus(s);
System.out.printf("Animal name: %s\n\tSpine status: %s\n\t"
+ "Fur status: %s\n\tSwim status: %s\n", Animal.getName(),
+ newFileAnimal.getSpineStatus(),
+ newFileAnimal.getFurStatus(),
+ newFileAnimal.getSwimStatus());
array.add(newFileAnimal);
ctr = 1;
}
}
编辑:
创建新对象的原因是,ArrayList不是创建新对象并存储,而是存储对象的引用,因此每次覆盖对象时,所有引用都指向更新的动物对象。
这个可能会有帮助
问题内容: 是否可以将JSON数据保存到本地文本文件中?因此,稍后我可以通过加载该文件再次使用它,并取回存储的JSON数据。其实我真正想做的是在文本文件中导出JSON数据,以便以后可以用作import.Any的建议或解决方案? 这是我要用于导出到文本的一些示例。 http://jsfiddle.net/k56eezxp/ 问题答案: 是否可以将JSON数据保存到本地文本文件中? 是。当前,链接的j
问题内容: 我看到过很多不同的文章,涉及到您应该以何种方式将对象序列化到文件,并且所有这些在本质上在执行方式和最佳实践方面存在冲突。因此,这就是我要保存的内容: 我们可以假设configArgs的大小已知,我需要制作一个文件,这就是到目前为止的内容。 问题答案: 好吧,我想,您想将对象直接写入文件 我只是提供了重要的代码。通过异常处理来实现。
问题内容: 我需要一些帮助:我正在用Java进行超市仿真,但是有一个问题,我有一个文本文件(Stock.txt),例如,我在上面有所有的超市库存: 0-面包巧克力蛋糕-$ 12.5-250 1-Meat-Premium Steak- $ 2.6-120 2海鲜金枪鱼-1.2-14美元 … 第一个数字是产品的“ id”,第二个是产品所属的部门,第三个是产品名称,第二个是价格,最后一个数字是库存的产品
我正在编写一个文件编写器,它将ID和名称(这两个字符串)写入文本文件。这需要用户输入,然后将数据存储在txt文件中。但是,当我再次运行它时,任何新数据都会覆盖以前的数据,因此数据永远不会保存到txt文件中。 谁能告诉我如何保存这些数据,以便添加的任何新数据都存储在下一行,而不覆盖上一行? 谢啦
本文向大家介绍C#从数据库读取数据到DataSet并保存到xml文件的方法,包括了C#从数据库读取数据到DataSet并保存到xml文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#从数据库读取数据到DataSet并保存到xml文件的方法。分享给大家供大家参考。具体实现方法如下: DataSet有一个WriteXml方法可以直接将数据保存到xml文件 希望本文所述对大家的C#程
问题内容: 我有这个项目: 导入文件 连接到SQL Server数据库 将所有数据转移到数据库中 文本文件按选项卡划分为四个字段,例如数据库。 我已经完成了使用富文本框并将所有数据保存在字符串中的第一步。我的想法是将字符串拆分为每行并将其保存在数组中,然后:如何拆分每一行,以便可以正确保存字段?如何将SQL Server上的数据库连接到C#上的项目? 问题答案: 让我们一次解决这一步骤… 获取数据