我目前正在尝试读取文件并相应地存储它们。我已经从文本文件中读取并将它们存储到arraylist中,现在我只是想存储framnumbers,但是当我打印出arrayList的内容时,我仍然得到相同的framenumber。
我的文本文件的内容
FrameNumber: 49136
FrameNumber: 49137
FrameNumber: 49138
FrameNumber: 49139
FrameNumber: 49140
FrameNumber: 49141
288
200
3848
287
191
3859
283
145
3849
我的readfile函数
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());
}
}
答案 0 :(得分:2)
您只创建一个Frame
。您使用Frame
创建Frame retrievedFrame = new Frame();
,然后为每一行更改该帧的帧编号并再次将其添加到列表中。
您可能想要的是每次都创建一个新的Frame
:
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");
}