Как узнать, сколько раз слова из строкового массива присутствуют в текстовом файле - PullRequest
1 голос
/ 09 апреля 2019

Итак, я хочу отсканировать текстовый файл и выяснить, сколько раз слова из моего массива используются в этом текстовом файле.

Используя мой код, я могу только узнать, сколько раз слово в позиции 0 в моем массиве находится в текстовом файле. Я хочу общее количество всех слов в моем массиве.

String[] arr = {"hello", "test", "example"};

File file = new File(example.txt);
int wordCount = 0;
Scanner scan = new Scanner(file);

for(int i = 0; i<arr.length; i++){
   while (scan.hasNext()) {
   if (scan.next().equals(arr[i])){
          wordCount++;
        }
 }
}
System.out.println(wordCount);

Пример.txt будет выглядеть так:

  hello hello hi okay test hello example test
  this is a test hello example

Есть желаемый результат, который я хотел бы получить для wordCount = 9

вместо этого wordCount для моего кода выше равен 4 (количество приветствий указано в текстовом файле)

Ответы [ 2 ]

3 голосов
/ 09 апреля 2019

Сканирование строки из файла, затем сканирование arr на совпадения ...

try (Scanner scan = new Scanner(file)) {
    while (scan.hasNext()) {
        String next = scan.next()
        for(int i = 0; i<arr.length; i++){
            if (next.equals(arr[i])){
              wordCount++;
            }
        }
    }
}
0 голосов
/ 09 апреля 2019

Здесь происходит следующее: в первом цикле достигается конец файла, и вы получаете только счетчик «привет».Вы можете перенастроить указатель на начало файла в конце / начале каждого цикла.


String[] arr = {"hello", "test", "example"};
File file = new File(example.txt);
int wordCount = 0;

for(int i = 0; i<arr.length; i++){
   Scanner scan = new Scanner(file);
   while (scan.hasNext()) {
   if (scan.next().equals(arr[i])){
          wordCount++;
        }
 }
}
System.out.println(wordCount);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...