2009-12-13 6 views
0

에서 모든 모듈에 대한 하나의 특정 StudentID 마크를 돌려 나는이 있습니다를 CSV 데이터 파일을 읽고 순간에 자바

import java.util.*; 
import java.io.*; 
import java.io.BufferedReader; 
import java.io.FileReader; 

public class StudentID { 

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

    System.out.println ("Please enter StudentID: "); 
    BufferedReader reader = new BufferedReader (new FileReader("CW2_data.csv")); 
     File file = new File("CW2_data.csv"); 
try { 
    BufferedReader r = new BufferedReader(
         new InputStreamReader(
         new FileInputStream("CW2_data.csv"))); 
    String line; 
    while((line = r.readLine()) != null) 
     System.out.println(line); 
    r.close(); 
} catch(IOException e) { 
    System.out.println(" There was an Error Reading the file. " + e.getMessage()); 
} 


    } 
} 

그때 그 StudentID의 사용자를 묻는 메시지를 표시하도록 프로그램을 얻기 위해 노력하고 있어요 해당 StudentId에 대한 데이터 파일을 검색하고 모든 모듈에 대한 마크를 반환하십시오. 불행히도 내 모든 코드는 전체 파일을 다시 나열합니다.

바로 뒤에 StudetnID=Userinput.readstring;을 추가하려고 시도 했으므로 사용자에게 사용자 이름을 입력 할 수있는 권한이 부여되었지만 전체 문서를 스캔하지 않으면 작동하지 않는다는 것을 알았습니다. 나는지도에서 (여기에 사용자에 의해 recomendeded) 읽고 있었지만 여전히 그립을 가지고 있지 않았고 그것이 여기서도 효과가 있을지 모르겠다. 데이터 파일은 3 열과 약 282 행의 데이터 형식입니다. 즉

UserID: Module: Mark 

ab006, GYH095, 56 

어떤 도움을 주시면 감사하겠습니다.

+0

이것은 숙제와 같습니다. – monksy

+0

그것의 더 많은 과제, 나는 누군가가 나를 위해 완료하도록 요청하지 않습니다, 그냥 나를 도와 줄 좋은 방향을 가리 킵니다. 읽고 읽고해야 할 것이 있습니다 – Izzy

+0

수업을 위해 할당 된 것을 얻으면 "숙제"꼬리표로 표시하십시오. 나는 너에게 해줬지만, 앞으로는 그렇게해라. 이 질문은 Google에서 많이 색인되며 Google을 통해 쉽게 찾을 수 있습니다. – monksy

답변

1

이것이 숙제 인 것으로 보이며 (이전 질문과의 연관성) 전체 해결책을 제시하지 않습니다.

버퍼링 된 리더는 전체 텍스트 줄을 읽습니다. 그래서 당신은 다음과 유사한 문자열을 얻을 것이다 : "ab006, GYH095, 56"당신은 지금 "ab06"가 개별 요소를 분리해서 할 수 있고 StringTokenizer 또는 사항 String.split 같은 것을 사용할 수있는 문자열로

를, "GYH095 ","56 "...

이 프로그램이 전체 파일을 다시 작성하는 이유는 프로그램이 파일을 스캔하기 만하면 읽는 내용에 아무 것도하지 않기 때문입니다.

+0

독자가 텍스트의 엔트리 줄을 버퍼링 한 후, String.split이 요소를 제거한 후에 볼 수 있었다. 그들 모두가 함께 일하는 것을 볼 수있는 그들의 예/독서입니까? – Izzy

+0

BufferedReader :: readLine을 사용하면 현재 줄을 문자열 형태로 줄 것이다. 문자열을 읽고 이동 한 후에 문자열로 작업하도록 선택하거나 모든 문자열을 저장 한 다음 나중에 전체 내용으로 작업하도록 선택할 수 있습니다. 나는 그것을 읽은 후에 그것을 작업 할 것을 강력히 제안 할 것이다. – monksy

0

음, 파일을 올바르게 읽는 것이 좋습니다. 먼저 파일을 읽기 전에 사용자 입력을 얻으려고합니다. 이 작업은 Java Scanner 클래스를 사용하여 수행 할 수 있습니다. 사용 방법에 대한 예제가 있습니다 (사용자가 String을 읽으려는 경우 힌트 : nextLine() 메서드). 나머지는 stevens 설명을 통해 수행 할 수 있습니다.

+0

감사합니다. 도움이되었습니다. 입력 한 내용을 사용자에게 물어봐야하므로 분명히 처리 할 수 ​​있었으므로 곧 작성한 내용을 게시 할 것입니다. – Izzy

+0

studentID에 대한 파일 검색에 약간의 메신저가 생겼습니다. 내가 수행 할 수있는 모든 작업을 수행 했으므로 buffereread를 포함하지 않고 무엇을 게시 했습니까? – Izzy

+0

요청한 내용이 확실하지 않습니다. – Roman

0

데이터를로드하려면 데이터 파일의 한 줄을 나타내는 간단한 클래스를 만든 다음 List에 저장하는 것이 좋습니다. 예, 매번 전체 목록을 살펴 봐야하지만 어쨌든 큰 목록으로 보이지는 않습니다 (사용할 수있는 자연 키가있는 경우 실제로는 Map을 사용할 수 있음). java tutorial on collections을 확인하십시오.

관련 문제