Reputation: 441
Im currently trying to read a file and store them accordingly. I've read the from the textfile and store them into an arraylist and now I'm just trying to store the framnumbers but i keep getting the same framenumber when I print out the contents of the arrayList.
contents of my textfile
FrameNumber: 49136
FrameNumber: 49137
FrameNumber: 49138
FrameNumber: 49139
FrameNumber: 49140
FrameNumber: 49141
288
200
3848
287
191
3859
283
145
3849
my readfile function
public void readFile()
{
ArrayList<Frame> frameList = new ArrayList<Frame>();
ArrayList<Joint> jointList = new ArrayList<Joint>();
ArrayList<String> al = new ArrayList<String>();
Frame retrievedFrame = new Frame();
Joint tempJoint = new Joint();
Coordinate tempCoordinate = new Coordinate();
try
{
File file = new File(filename);
if(!file.exists())
{
file.createNewFile();
}
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
BOMSkipper.skip(bufferedReader);
String line = bufferedReader.readLine();
while (line != null)
{
al.add(line);
line = bufferedReader.readLine();
}
bufferedReader.close();
}
catch (IOException e)
{
e.printStackTrace();
}
String temp;
for (int i = 0; i < al.size(); i++)
{
if (al.get(i).contains("FrameNumber:") == true)
{
temp = al.get(i).replace("FrameNumber: ", "");
temp = temp.trim();
retrievedFrame.setFrameNumber(Integer.parseInt(temp));
frameList.add(retrievedFrame);
System.out.println("Frame Detected");
}
else
{
System.out.println("Not Frame");
}
}
for (int j = 0; j < frameList.size(); j++)
{
System.out.println(frameList.size());
System.out.println("Frame Number: " + frameList.get(j).getFrameNumber());
}
}
Upvotes: 0
Views: 60
Reputation: 10173
You're only creating a single Frame
. You create the Frame
with Frame retrievedFrame = new Frame();
and then for each line you change the frame number of that frame and add it to the list again.
What you probably want is to create a new Frame
each time:
if (al.get(i).contains("FrameNumber:")) {
temp = al.get(i).replace("FrameNumber: ", "");
temp = temp.trim();
Frame retrievedFrame = new Frame();
retrievedFrame.setFrameNumber(Integer.parseInt(temp));
frameList.add(retrievedFrame);
System.out.println("Frame Detected");
}
Upvotes: 2