2014-11-24 4 views
-1

현재 첫 번째 Java 클래스를 사용하고 있으며 완전히 연습하지 못했습니다. 학생 ID와 해당 테스트 점수가 포함 된 텍스트 파일에서 데이터를 읽은 다음 프로그램 등급을 정한 다음 결과를 인쇄해야합니다.텍스트 파일에서 배열로 데이터 처리

나는이 종류의 문제를 이해하고 있지만, 우리가 연구하고있는 책은 다소 읽기가 어렵다. 그것들은 모두 함께 어지럽게 섞여서, 나는 그들이 두 개의 별개의 것들을 읽고 그것들을 어떻게 조합 할 것인지 논리적으로 도약시키고 단지 그것을 얻지 않기를 원한다고 느낀다.

TTFTFTTTFTFTFFTTFTTF ABC54102 T FTFTFTTTFTTFTTF TF DEF56278 TTFTFTTTFTFTFFTTFTTF ABC42366 TTFTFTTTFTFTFFTTF ABC42586 TTTTFTTT의 TFTFFFTF

내 주요 문제는 나는 내가 가지고있는 데이터 배열을 묶는 방법을 볼 수 없다는 것입니다.

+1

텍스트 파일은 구분의 일종이 있어야합니다. 당신이 게시하지 않고 말할 수 없습니다. 하지만 파일을 읽고 각 줄마다 분리 문자가 무엇이든간에 분리하고 점수, ID 등을 열 색인으로 가져옵니다. – sunrize920

+1

프로그래밍을 배우는 방법의 시작은 Google에 올바른 것을 알리는 것입니다. 분명히 당신은 그렇게하지 않을 것입니다. 다음 줄을 검색하는 것이 좋습니다 : "줄 단위로 파일 줄을 읽는 방법", "문자열을 쉼표로 구분하는 방법"(또는 여러 가지가 파일에서 분리되어 있습니다) . 파일에서 읽고있는 내용을 객체로 표현하고 배열 목록에 저장해야합니다. 정직하게 파일을 보여주기 위해 게시물을 편집하십시오. 내가 당신을 더 도울 수 있습니다. – sunrize920

답변

3

전체 솔루션을 게시하지는 않을 것이지만 몇 가지 단계를 시작하십시오.

이 예

BufferedReader reader = new BufferedReader(new FileReader("/path/to/file.txt")); 
String line = null; 
ArrayList<String> array = new ArrayList<>(); 
while ((line = reader.readLine()) != null) { 
    array.add(line); 
} 

에 따라 공백이 T의와 F의, 내가 생각하는의 목록에서 허용되기 때문에, 그래서이

str.split(" "); // considering that ids and name are separated by spaces 
+0

See,하지만 그게 제가 혼란스러워하는 것입니다. 내가 주제를 바라 보는 모든 것은 문자열을 나누거나 x 또는 y를하는 것에 관한 것들을 던지기 시작하고 그 책에는 언급되지 않았다. –

+0

내 도움이되는 답변을 찾으십시오. 그렇다면 올바른 것으로 표시하십시오. 감사합니다. – Junaid

+0

Buffered Reader는 정확히 무엇입니까? 각 단계가 정확히 무엇을 설명하는지 몇 가지 의견을 가질 수 있습니까? –

0

같은 문자열을 분할은 학생이 왼쪽 의미 비어있는 질문에 대한 답변을 얻으려면 split과 같은 편리한 방법을 사용하지 않아도 쉽게 답변을 구분할 수 있습니다. 대신에 우리는 질문의 수가 같아야하고 ID의 길이는 공통적이어야한다는 지식을 사용합니다. 하위 문자열 메서드를 사용하여 필요한 것을 파싱 할 수 있습니다.

는 여기에 몇 가지 의사 : 그것은 CSV 파일이나 뭔가를 할 수있다처럼

final int NUM_QUESTIONS = 25; //I didn't actually count, that's your job 
final int ID_LENGTH = 8; 
int currentIndex = 0; 

//assuming you can fit the whole string in memory, which you should in an intro java class 
//do the operations that googling "read a file into a string java" tells you to do in readFileToString 
String fileContents = readFileToString("saidFile.txt"); 


while(fileContents.charAt(currentIndex) != fileContents.length()){ 
    String userAnswers = fileContents.substring(currentIndex, currentIndex+NUM_QUESTIONS); 

    //move index past userAnswers and the space that separates the answers and the id 
    currentIndex = currentIndex + NUM_QUESTIONS + 1; 

    String userId = fileContents.substring(currentIndex, currentIndex+ID_LENGTH) 

    //move currentIndex past userId and the space that separates the userId from the next set of answers 
    currentIndex = currentIndex + ID_LENGTH + 1; 

    //either create an object to store the score with the userId, or print it right away 
    int score = gradeAnswers(userAnswers) 
    System.out.println(userId + " scored " + score); 
} 
관련 문제