2014-11-16 4 views
0

현재 파일을 읽고 그에 따라 저장하려고합니다. 나는 텍스트 파일을 읽고 arraylist에 저장했다. 이제는 framnumbers를 저장하려하지만 arrayList의 내용을 인쇄 할 때 동일한 프레임 번호를 계속 사용한다. 내 TEXTFILE내 루프에 무슨 문제가 있습니까?

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

답변

2

당신은 단지 하나의 Frame을 만드는의

내용. FrameFrame retrievedFrame = new 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"); 
} 
+0

아 내가 볼 : 당신은 아마 원하는 것은

새로운 Frame마다 작성하는 것입니다. 나는 현재 값을 새로운 값으로 바꿀 것이라고 생각했다. 감사 – John

관련 문제