2015-02-04 5 views
1

Итак, я должен сделать этот объект DocumentAnalyzer, а затем в других функциях, например getUniqueWords, я должен иметь возможность сохранять содержимое сохраненного в нем файла и сортировать содержимое , Чтобы получить уникальные слова, я собирался использовать Set, так как он не может иметь дубликатов.Получить информацию от объекта (JAVA)

Объект:

public DocumentAnalyzer(String filename) throws FileNotFoundException 
{ 

    List<String> records = new ArrayList<String>(); 
     try 
     { 
     BufferedReader reader = new BufferedReader(new FileReader(filename)); 
     String line; 
     while ((line = reader.readLine()) != null) 
     { 
      records.add(line); 
     } 
     reader.close(); 
     } 
     catch (Exception e) 
     { 
     System.err.format("Exception occurred trying to read '%s'.", filename); 
     e.printStackTrace(); 
     return; 
     } 

     System.out.print(records); 
} 


public Set<String> getAllWords(?????) 
{ 

    Set<String> set = new HashSet<>(values); 

    for (String value : set) 
     System.out.printf("%s", value); 

    return set; 
} 

Как мне сделать так, когда я вызываю функцию можно использовать информацию внутри DocumentAnalyzer? Я знаю, что это имеет какое-то отношение к параметрам, так что мне нужно что-то бросить? это на самом деле довольно просто, я просто не замечаю? стучал головой об этом в течение нескольких часов

+0

и да, я положил ???? потому что я считаю, что это моя проблема! – HaffCaff

+0

Объявлять записи вне любого метода, а затем использовать его внутри метода getAllWords, вам не нужно ничего пропускать. –

ответ

1

код вы вывесили, вероятно, в class декларации, такие как:

public class DocumentAnalyzer { 
    // your code here 
} 

Ваша текущая проблема заключается в том, что List<String> records является локальной переменной вашего конструктора.

Что вам нужно, чтобы магазина вашей информации в поле (так называемого атрибутом) этот класс, вместо того чтобы держать ваше объявление переменного в конструкторе:

public class DocumentAnalyzer { 

    private List<String> records; 

    // your code here 
} 

Затем используйте это поле вместо локальной переменной в конструкторе, путем замены:

List<String> records = new ArrayList<String>(); 

по:

records = new ArrayList<String>(); 

Теперь вам не нужны никакие параметры для вашего метода getAllWords(), так как вам просто нужно использовать records, который доступен оттуда.

Смежные вопросы