2012-10-07 4 views
1

필자는 파일을 읽고 배열 목록에 결과를 수집하는 기능을 가지고 있습니다. 배열 목록이 (데이터)과 같은내 결과를 파일을 읽지 못하도록하는 더 나은 방법은 무엇입니까?

[12, 아담, 1993, 1234, 밥, 1992] 그때 환자라는 새로운 객체로이 정보를로드 할 필요

. 이것은 지금까지 각각의 배열 목록 항목을 각자의 환자에게 넣는 현재의 방법입니다. 그러나 그것은 String String Int를 전달한다는 오류로 나를 괴롭 히며 문자열이어야합니다. 문자열로 내 배열 목록 결과를 전달할 수있는 방법이 있나요

들,이

(12), 아담처럼 1993

보이는 그리고 이것은 코드

public void loadPatients()throws Exception 
{ 
    ArrayList<String> data = IO_Support.readData("PatientData.txt"); 

    System.out.println(data); 
    for(String s : data) 
    { 
     Sytem.out.println(s); 
     patientList.add(new Patient(s)); 
    } 
} 

입니다 환자 객체로 전달하기 위해 또는 다른 방법으로 문자열 결과를 분할해야합니까?

데이터 읽기이

public static ArrayList<String> readData(String fileName) throws Exception 
{ 
    ArrayList<String> data = new ArrayList<String>(); 
    BufferedReader in = new BufferedReader(new FileReader(fileName)); 

    String temp = in.readLine(); 
    while (temp != null) 
    { 
     data.add(temp); 
     temp = in.readLine(); 
    } 
    in.close(); 
    return data; 
} 
+1

'data'에서 사용할 수있는's' 데이터로 전환하는 데 문제가 있습니다. 나는 아마도 '데이터'에서 환자의 생성자로 3 가지 값을 전달할 것으로 기대합니다. –

답변

1
while (temp != null) 
{ 
    temp = in.readLine(); 
} 

우선처럼 보이는, 당신은 결코 ..이 while 루프는 아무 의미가 그냥 사용자 입력을 읽는하지 않습니다 .. 만드는의 ArrayList에 입력을 추가하지 않습니다, 당신의 예외, 당신이없는 이는 1-arg constructorPatient class의를 사용하고 있는지의 확인을보고 난 후에 .. 모든 계기에

플러스 그것을 삼키는 .. 0-arg constructor2-arg constructorPatient 클래스에 있습니다. 실제로 사용해야합니다.

patientList.add(**new Patient(s)**); --> Will not work 

그래서, 당신의 환자 클래스에 추가 ... .. 당신은 당신의 환자 클래스는 컴파일하려면1 인수 생성자를 추가 할 필요가 loadPatient 방법이 코드를 참조하십시오 -

public Patient(String s) { 
    this.s = s; 
} 

this.s는 ..

이 통과 s를 저장하는 인스턴스 변수 0
+0

은 OP가 IO_Support.readData (String) 메소드를 보여주지 않는 한, 문자열을 같은 문자열로 푸시한다고 가정 할 수 없습니다. 문자열로 푸시 할 수도 있습니다. – user1406062

+0

'String을 전달 중입니다. String Int이고 String이어야합니다. '- 여기에 오류가 있습니다. 무엇부터 붙잡습니까? –

+0

내 실수. 하지만 OP는 스택 추적을 포함시켜 오류를 더욱 명확하게해야합니다. 사실 정수가 문자열 목록에 푸시된다면 프로그램이 컴파일되지 않을 것이라고 생각합니다. – user1406062

관련 문제