Как правильно определить слова при чтении из файла со сканером java? - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь выполнить упражнение, в котором мне нужно создать класс для чтения слов из .txt и поместить слова в HashSet. Дело в том, что если текст гласит: «Я Даниил, я Даниил». Я буду иметь слово для «я», «я». и «Даниил» и «Даниэль». Как мне это исправить?

Вот мой код. (Я пытался использовать регулярные выражения, но я получаю исключение):

import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashSet;
import java.util.Scanner;

public class WordCount {

    public static void main(String[] args) {
        try {
            File file = new File(args[0]);
            HashSet<String> set = readFromFile(file);
            set.forEach(word -> System.out.println(word));
        }
        catch(FileNotFoundException e) {
            System.err.println("File Not Found!");
        }

    }

    private static HashSet<String> readFromFile(File file) throws FileNotFoundException {
        HashSet<String> set = new HashSet<String>();
        Scanner scanner = new Scanner(file);
        while(scanner.hasNext()) {
            String s = scanner.next("[a-zA-Z]");
            set.add(s.toUpperCase());
        }
        scanner.close();
        return set;
    }


}

1 Ответ

0 голосов
/ 24 марта 2020

Ошибка выдается, когда Сканер пытается прочитать строку, не соответствующую регулярному выражению.

String s = scanner.next("[a-zA-Z]");

Вместо передачи регулярного выражения в Сканере. Прочитайте слово и удалите специальные символы, как показано ниже.

String s = scanner.next();
s = s.replaceAll("[^a-zA-Z]", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...