2015-01-24 4 views
0

내용이 탭으로 구분 된 텍스트 파일에서 직원 세부 정보를 읽어야합니다.텍스트 파일의 내용을 arraylist에 저장하는 방법

package employee; 

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 

public class Employee { 

    public static void main(String[] args) throws IOException{ 

     ArrayList<Employee_Info> ar_emp = new ArrayList<Employee_Info>(); 
     BufferedReader br = null; 
     Employee_Info e = null; 
     br = new BufferedReader(new FileReader("C:/Users/home/Desktop/Emp_Details.txt")); 
     String line; 
     try { 
      while ((line = br.readLine()) != null) { 
       String data[] = line.split("\t"); 
       e = new Employee_Info(); 
       e.setDept_id(Integer.parseInt(data[0])); 
       e.setEmp_name(data[1]); 
       e.setCity(data[2]); 
       e.setSalary(Integer.parseInt(data[3])); 

       ar_emp.add(e); 
      } 
      for(Employee_Info i : ar_emp){ 
       System.out.println(i.getDept_id()+","+i.getEmp_name()+","+i.getCity()+","+i.getSalary()); 

      } 
      br.close(); 

     } catch (IOException io) { 
      io.printStackTrace(); 
     } 
    } 
} 

package employee; 

public class Employee_Info { 

    private static int dept_id; 
    private static String emp_name; 
    private static String city; 
    private static int salary; 

    public static int getDept_id() { 
     return dept_id; 
    } 
    public static void setDept_id(int dept_id) { 
     Employee_Info.dept_id = dept_id; 
    } 
    public static String getEmp_name() { 
     return emp_name; 
    } 
    public static void setEmp_name(String emp_name) { 
     Employee_Info.emp_name = emp_name; 
    } 
    public static String getCity() { 
     return city; 
    } 
    public static void setCity(String city) { 
     Employee_Info.city = city; 
    } 
    public static int getSalary() { 
     return salary; 
    } 
    public static void setSalary(int salary) { 
     Employee_Info.salary = salary; 
    } 


} 

내가 읽은하려고 텍스트 파일 다음과 같습니다 :

10 A Denver 100000 
10 B Houston 110000 
10 C New York 90000 
10 D Houston 95000 
20 F Houston 120000 
20 G New York 90000 
20 H New York 90000 
20 I Houston 125000 
30 J Houston 92000 
30 K Denver 102000 
30 L Denver 102000 
30 M Houston 85000 

내가 인쇄에 Employee 클래스를 실행하면 아래와 같이 나는이 개 수업을 ArrayList ar_emp의 내용은 다음과 같은 반복 출력을 얻습니다.

30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 
30,M,Houston,85000 

도와주세요.

답변

3

Employee_Info의 모든 속성을 static 필드로 선언했습니다. 이것들은 클래스의 인스턴스에 바인딩되지 않고 클래스 자체에 바인딩됩니다. 따라서 클래스의 모든 인스턴스는 동일한 값을 공유합니다. 필드와 메서드에서 static 키워드를 제거하십시오.

IDE (예 : Eclipse)를 사용해야하므로 인스턴스의 정적 메소드 호출에 대해 경고해야합니다.

3

static은 단 하나의 값을 의미하고 클래스 수준에서도 (생성하는 개체의 수에 관계없이) Employee_Info 클래스의 모든 필드와 메서드에서 정적을 제거합니다.

관련 문제