Объединение метода счетчика строк с методом подсчета слов
У меня есть метод, который подсчитывает вхождения слов в текстовом файле и возвращает количество раз, когда слово найдено в определенной строке. Тем не менее, он не отслеживает номер строки, в которой находятся слова. У меня есть отдельный метод, который подсчитывает количество строк в текстовом файле, и я хотел бы объединить два метода в метод, который отслеживает номера строк и сохраняет журнал вхождения слов в каждой строке.
Вот два метода, которые я хотел бы объединить, чтобы получить в результате что-то вроде: "Слово встречается X раз в строке Y"
public class Hash
{
private static final Object dummy = new Object(); // dummy variable
public void hashbuild()
{
File file = new File("getty.txt");
// LineNumberReader lnr1 = null;
String line1;
try{
Scanner scanner = new Scanner(file);
//lnr1 = new LineNumberReader(new FileReader("getty.txt"));
// try{while((line1 = lnr1.readLine()) != null)
// {}}catch(Exception e){}
while(scanner.hasNextLine())
{
String line= scanner.nextLine();
List<String> wordList1 = Arrays.asList(line.split("\\s+"));
Map<Object, Integer> hm = new LinkedHashMap<Object, Integer>();
for (Object item : wordList1)
{
Integer count = hm.get(item);
if (hm.put(item, (count == null ? 1 : count + 1))!=null)
{
System.out.println("Found Duplicate : " +item);
}
}
for ( Object key : hm.keySet() )
{
int value = hm.get( key );
if (value>1)
{
System.out.println(key + " occurs " + (value) + " times on line # "+lnr1.getLineNumber());
}
}
}
} catch (FileNotFoundException f)
{f.printStackTrace();}
}
}
вот мой оригинальный метод подсчета строк
public void countLines()
{
LineNumberReader lnr = null; String line;
try
{
lnr = new LineNumberReader(new FileReader("getty.txt"));
while ((line = lnr.readLine()) != null)
{
System.out.print("\n" +lnr.getLineNumber() + " " +line);
}
System.out.println("\n");
}catch(Exception e){}
}
1 ответ
Почему вы просто не помните номер строки в цикле while? Инициализируйте новую переменную и увеличьте ее при вызове nextline.