2013-11-27 5 views
1

하여 파일의 문자열을 비교.나는 두 개의 파일을 문자열

studentSubmission은 학년 클래스로 전송하는 방법은 현재 다음과 같습니다된다

public static void getFileInfo(String fileName) 
     throws FileNotFoundException { 

    Scanner in = new Scanner(new File(fileName)) 

    while (in.hasNext()) { 
    String fileContent = in.nextLine(); 
    } 

을하고 TeacherFiles 방법은 내가 이러한 방법을 얻는 방법을 모르는

public static void teacherFiles(String teacherFiles) 
     throws FileNotFoundException{ 

    Scanner in = new Scanner(new File(teacherFiles)); 

    while (in.hasNext()){ 
     String teacherContent = in.nextLine(); 

     String line = teacherContent.substring(0, teacherContent.indexOf('=')); 
    } 

처럼 보인다 파일로부터 오는 것이기 때문에 그들을 비교하기위한 또 다른 방법입니다. 나는 그것을 전달하기 위해 메소드 시그니처에 무엇인가 넣어야하고 작동하지 않습니다.

나는 한 가지 방법으로 그것들을 집어 넣으려고했으나, 그것은 또한 흉상이었다.

여기에서 어디로 가야할지 모르겠다.

그리고 불행히도 try/catch 나 배열을 사용할 수 없습니다.

메서드를 통해 .substring (0, .indexof ('='))을 전송할 수 있습니까?

Like line = teacherFiles(teacherContent.substring(0 , .indexof('='))); 가능합니까?

+0

연구실이므로 배열을 사용할 수 없습니다. 할 수 있다면, 이것은 백만 배 더 간단 할 것이고 나는 묻지 않을 것입니다. – CherryBomb95

+0

어떻게 그 일을 할 것입니까? – CherryBomb95

+0

알았어, 고마워. – CherryBomb95

답변

0

좀 더 일반적인 용어로 생각해보십시오. getFileInfoteacherFiles이라는 메서드는 각각 약간의 차이를 제외하고는 매우 똑같습니다. 그렇다면 두 기능을 병합하고 외부의 뉘앙스를 처리하는 최적의 방법을 찾는 것에 대해 생각하지 않는 이유는 무엇입니까?

배열을 초기화하기 전에 배열의 요소 수를 알아야하므로 배열을 사용할 수 없으며 파일을 읽을 때 배열이 이미 초기화되었을 것입니다. 따라서이 작업을 위해 배열을 사용하는 것은 잔인합니다 (예 : 메모리에 1000 개의 요소를 할당하고 10 개의 요소 만 사용) 또는 불충분합니다 (10 개의 요소 배열을 만드는 경우 1000 개가 필요함). 따라서 미리 행 수를 알지 못하기 때문에 작업에 다른 데이터 구조를 사용해야합니다.

public static AbstractList<String> readFile(String filePath) throws FileNotFoundException, IOException { 
    Scanner s = new Scanner(new File(filePath)); 
    AbstractList<String> list = new ArrayList<String>(); 
    while (s.hasNext()){ 
     list.add(s.next()); 
    } 
    s.close(); 
    return list; 

} 

그런 다음 학생의 파일을 읽을 교사 파일을 읽을 수있는 방법을 사용하십시오

그래서 다음과 같은 방법을 만들 수 있습니다. 결과를 두 개의 개별 변수 AbstractList<String>에 저장 한 다음 반복하여 원하는대로 비교하십시오. 다시 말하지만, 좀 더 일반적인 용어로 생각하십시오.