私のコードで助けを探しています。プログラムが.txtファイルから読み込み、Animalオブジェクトを作成し、ファイル内のデータが正しくフォーマットされていると仮定して、そのファイル内のデータに基づいてAnimalオブジェクトのArrayListに挿入します。Java - テキストファイルからの読み取りとオブジェクトのArrayListへのデータの保存の問題
私は行番号を記録するためにカウンタを作成しました。 .txtファイルのデータがどのように書式設定されているか分かっているため、1つのAnimalオブジェクトの開始位置と終了位置を予測できます。
私が得続ける問題は、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;
}
}
テキストファイルには、次のようになります。
あなたは何度も何度も同じAnimal
オブジェクトを再利用しているためだ
Rabbit
true
true
true
Duck
true
false
true
あなたの問題を助けるかもしれないが、あなたが配置しているすべてのオブジェクトで、その結果、動物のインスタンスを1つだけ作成し、常にその1を更新し、ローカル変数「newFileAnimal」を更新しないということです配列は同じAnimalであり、データは最後に配置された情報になります。 – L33T