2013-11-15 5 views
1

클래스 룸 (String name, ArrayList students)을 arg 생성자로 사용하는 클래스 룸이 있습니다. 그러나 arraylist에서 읽을 때 모든 학생을 읽습니다. 다른 선생님들 예 :ArrayList를 arg 생성자에 읽는 방법

TeacherA,john,mick 

TeacherB,james,doe 

TeacherA의 경우 john과 mick 만 읽는 대신 모든 학생을 읽습니다. 나는 이것을 멈출 수있는 방법을 모른다.

ArrayList<Classroom> studentTeacher..... 
try{ 
    FileReader fr = new FileReader("txt.csv"); 
    BufferedReader br = new BufferedReader(fr); 
    String fileLines; 
    String[] parts; 
    ArrayList<String> students= new ArrayList<String>(); 

    while(br.ready()) { 
     fileLines = br.readLine(); 
     parts = fileLines.split(","); 
     int size = parts.length; 
     for(int i =1; i<size; i++) { 
      students.add(parts[i]); 
     } 
     studentTeacher.add(new Classroom(parts[0], students)); 
    } 
    br.close(); 
} catch(IOException e) { 
    System.out.println("Couldnt Read file"); 
} 
return studentTeacher; 
+0

students 객체 (ArrayList?)는 어디에 선언합니까? while 루프를 실행할 때마다 삭제하지 않으면 매번 더 많은 행을 추가 한 다음 studentTeacher arraylist에 추가합니다. 다른 말로하면, 처음으로 10 명의 학생을 합쳐 10 점이됩니다. 다음에 10 점을 더 얻으시면 20 점이됩니다. – Andrew

답변

1

당신은 당신이 당신의지도에 추가 한 후 학생 (들)의 목록을 "재설정"필요 - 그냥 명확하지()를 다음지도는 여전히 하나의 목록 참조했을 수 있기 때문이다.

studentTeacher.add(new Classroom(parts[0], students)); 
// Add this line. 
students = new ArrayList<String>(); 
+0

그게 전부입니다. 감사합니다. 충분한 인사가있다. –

0

이 해결책이 될 수는 각 라인에 대한 새로운 ArryList()를 작성

List<Classroom> studentTeacher..... 
    try{ 
     FileReader fr = new FileReader("txt.csv"); 
     BufferedReader br = new BufferedReader(fr); 
     String fileLines; 
     String[] parts; 
     List<String> students= null; 

      while(br.ready()) { 
       students= new ArrayList<String>(); // Creates a new ArrayList of Students for each new line. 
       fileLines = br.readLine(); 
       parts = fileLines.split(","); 
       int size = parts.length; 
       for(int i =1; i<size; i++) { 
        students.add(parts[i]); 
       } 
       studentTeacher.add(new Classroom(parts[0], students)); 
      } 
     br.close(); 
    } catch(IOException e) { 
     System.out.println("Couldnt Read file"); 
    } 
return studentTeacher; 

행운을!

관련 문제