2014-11-12 6 views
-2

Мне даны три текстовых файла и их необходимо загружать последовательно, беря на себя не текущий загруженный файл и ранее загруженные текстовые файлы.Как сохранить загруженные текстовые данные

data1.txt 
Name Score 
Leslie 25 
Pat  12 
Alfred 32 

data2.txt 
Name Score 
Leslie 35 
Keith 22 
Alfred 12 

data3.txt 
Name Score 
Philip 38 
Keith 32 
Diop 22 

Ожидаемый результат

Current Scores : 38, 32, 22 
Current Names : Philip, Keith, Diop 

Previous Scores : 35, 22,12 
Previous Names : Leslie, Keith, Alfred 

Это код, написанный для этого. Это не дает мне ожидаемых результатов:

List<String> name = new ArrayList<String>(); 
    List<String> currentscore = new ArrayList<String>(); 
    List<String> prevscore = new ArrayList<String>(); 

    String path = "C:........../question/"; 

    String textfile; 

    File folder = new File(path); 

    File [] listOfFiles = folder.listFiles(new FilenameFilter(){ 

     @Override 
     public boolean accept(File folder, String name){ 
      return name.endsWith(".txt");    
     } 
    }); 
    for (int ixa=0; ixa<listOfFiles.length; ixa++){ 

     textfile = listOfFiles[ixa].getName(); 
     String inputfile = textfile; 
     FileReader fr1 = new FileReader(inputfile); 
     BufferedReader bfr1 = new BufferedReader(fr1); 
     String aLine1; 
     while ((aLine1 = bfr1.readLine()) != null) { 
       String[] split = aLine1.split("\t"); 
       name.add(split[0]); currentscore.add(split[1]); 
      } 
     System.out.println(name);System.out.println("Current Scores are" + currentscore); 
     System.out.println("Previous Scores are" + prevscore); 

     prevscore = currentscore; 
     currentscore.clear(); 
     name.clear(); 
    } 
+1

«Это не дает мне ожидаемых результатов» не очень специфично. Расскажите, что вы получаете, и чего вы ожидаете, и где вы определили проблему. – SJuan76

+0

Ожидаемые результаты приведены в сообщении. –

+0

Какой результат вы даете? – markspace

ответ

1

Программирование проблемы

  • Вы открывающие файлы и их не закрывая. Вы должны использовать bfr1.close() после цикла while или использовать «попробуйте с ресурсами» для открытия файлов.
  • Вы должны использовать только объект File, а не его имя.
  • Вы назначаете prevscore = currentscore, но затем вы очищаете currentscore. Обратите внимание - когда вы назначаете объект, вы не назначаете его копию. Вы просто помещаете ссылку на один и тот же объект на prevscore. Это означает, что когда вы его очищаете, он также очищается в prevscore. То, что вы должны делать:

    prevscore = currentscore; 
    currentscore = new ArrayList<String>(); 
    

    Это означает, что prevscore точки теперь к тому, что раньше currentscore, но теперь currentscore указывает на новый пустой объект.

проблемы Логические

  • Каждый файл имеет заголовок строки. Но вы читаете строки с самого первого, так что строки «Name» и «Score» добавляются в ваши списки. Вы должны пропустить первую строку каждого файла.
  • Вы не печатаете имена. Вы должны. В противном случае нет смысла хранить список имен вообще.
  • Вы сохраняете список предыдущих результатов, но вы не сохраняете список предыдущих имен. Если вы собираетесь распечатать их, вам понадобится список предыдущих имен.
Смежные вопросы