2017-12-10 15 views
0

두 개의 텍스트 파일을 하나의 파일에서 제거한 후 결합하는 프로그램을 만들려고합니다. (나는 2 개의 질문과 대답 목록을 가지고 있으며 두 파일 모두에서 모든 질문을 얻고 싶습니다) 하지만 다음 코드를 사용하면 줄에 따라 답을 일치시키기 전에 질문을 분류하지 않습니다.파일 결합기가 동일한 출력을 얻지 못함

import java.util.Scanner; 
import java.io.File; 
import java.util.List; 
import java.util.LinkedList; 
import java.nio.file.Files.*; 
import java.nio.file.Paths; 
import java.nio.file.*; 
import java.util.Set; 
import java.util.HashSet; 
import java.nio.charset.Charset; 

class Main{ 

    public static List fileToList(String path){ 

     Scanner scanner = openFile(path); 
     List<String> list = loadFile(scanner); 
     closeFile(scanner); 

     return list; 
    } 

    public static Scanner openFile(String path){ 

     Scanner scanner = null; 

     try{  
      scanner = new Scanner(new File(path),"ISO-8859-1"); 

     }catch(Exception e){ e.printStackTrace(); } 

     return scanner; 
    } 

    public static List loadFile(Scanner scanner){ 

     List<String> list = new LinkedList<String>(); 

     while(scanner.hasNextLine()){ 
      list.add(scanner.nextLine()); 
     } 

     return list; 
    } 

    public static void closeFile(Scanner scanner){ 
     scanner.close(); 
    } 

    public static Set fileCombiner(List<String> list1 , List<String> list2){ 

     for(int i = 0; i < list1.size(); i++){ 
      for(int c = 0; c < list2.size(); c++){ 

       if(list1.get(i).equals(list2.get(c))){ 

        if(list1.size() > list2.size()) 
         list1.remove(i); 
        else 
         list2.remove(c); 
       } 

      } 
     } 

     //COMBINING TRIMMED FILES 

     Set<String> set1 = null; 

     if(list1.size() > list2.size()){ 
      list1.addAll(list2); 
      set1 = new HashSet<String>(list1); 
     } 
     else{ 
      list2.addAll(list1); 
      set1 = new HashSet<String>(list2); 
     } 


     return set1; 
    } 

    public static void main(String args[]){ 

     Scanner input = new Scanner(System.in); 

     System.out.print("Enter name of file 1: "); 
     String name1 = input.next(); 

     System.out.print("Enter name of file 2: "); 
     String name2 = input.next(); 

     String path1 = name1 + ".txt"; 
     String path2 = name2 + ".txt"; 

     List<String> list1 = fileToList(path1); 
     List<String> list2 = fileToList(path2); 

     Set set1 = fileCombiner(list1,list2); 

     Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); 

     try{ 
      Files.write(Paths.get("GENERATED.txt"),set1,ISO_8859_1); 
     }catch(Exception e){} 

    } 
} 

답변