繁体   English   中英

我的循环怎么了?

[英]Whats wrong with my loop?

我目前正在尝试读取文件并进行相应的存储。 我已经从文本文件中读取了它们,并将其存储到arraylist中,现在我只是想存储帧号,但是当我打印出arrayList的内容时,我一直得到相同的帧号。

我的文本文件的内容

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());            
    }       
}

您只创建一个Frame 您可以使用Frame retrievedFrame = new 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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM