выделенный текст В настоящее время я пытаюсь запустить этот код (с двумя разными файлами).Один файл - это просто словарь слов, а другой - просто файл с текстом.Когда я запускаю этот код, мой код выводит весь текст файла, который предоставляется в getIncorrectWords.Я знаю, что это неправильно, поскольку есть ошибки, которые должен забрать этот SpellChecker (и должны быть напечатаны только неправильные слова).Я вернулся, чтобы внести некоторые изменения в свой конструктор, и я не могу найти ошибку в своем коде.Может ли кто-нибудь предоставить информацию о том, что может быть не так с моей программой, и дать несколько советов или советов, как это исправить?Для справки я делаю SpellChecker, который хранит определенные словарем слова в HashSet.Я должен проанализировать другой файл и проверить, какие слова в нем не определены в словаре, и сохранить их в списке.Это сделано моим методом getIncorrectWords.Наконец, я даю предложения о том, какие слова могли быть использованы в моем методе getSuggestions.Предложения можно найти в следующем:
Добавить один символ - попробуйте добавить символ в каждой точке строки и посмотреть, создает ли это действительное слово.
Удалить один символ - Попробуйте удалить одинсимвол из любой позиции и посмотрите, создает ли это действительное слово.
Обмен смежными символами - попробуйте поменять местами два последовательных символа в любой позиции в строке и посмотрите, создает ли это действительное слово.
СпасибоВы за время и за ввод!
public class SpellChecker {
private Set<String> dictionary = new HashSet<>();
public SpellChecker(String fileName) {
dictionary = getDictionary(fileName);
}
public List<String> getIncorrectWords(String fileName) {
File file = new File(fileName);
List<String> words = new ArrayList<>();
try {
Scanner input = new Scanner(file);
while (input.hasNextLine()) {
String word = input.nextLine().trim().toLowerCase();
if (!dictionary.contains(word)) {
words.add(word);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return words;
}
public static List<String> getSuggestions(String word){
List<String> letters = Arrays.asList("a", "b", "c", "d", "e", "f", "g",
"h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u",
"v", "w", "x", "y", "z");
List<String> suggestions = new ArrayList<String>();
StringBuilder builder = new StringBuilder(word);
for(int i = 0; i <= builder.length(); i++){
for(String string: letters){
StringBuilder suggestion = new StringBuilder(builder.toString());
suggestion.insert(i, string);
if(dictionary.contains(suggestion.toString().toLowerCase())){
suggestions.add(suggestion.toString());
}
}
}
for(int i = 0; i <= builder.length()-2; i++){
for(String string: letters){
StringBuilder suggestion = new StringBuilder(builder.toString());
char one = suggestion.charAt(i + 1);
char two = suggestion.charAt(i);
suggestion.replace(i, i + 1, String.valueOf(one));
suggestion.replace(i+1, i + 2, String.valueOf(two));
if(dictionary.contains(suggestion.toString().toLowerCase())){
suggestions.add(suggestion.toString());
}
}
}
for(int i = 0; i <= builder.length(); i++){
for(String string: letters){
StringBuilder suggestion = new StringBuilder(builder.toString());
suggestion.replace(i, i + 1, "");
if(dictionary.contains(suggestion.toString().toLowerCase())){
suggestions.add(suggestion.toString());
}
}
}
return suggestions;
}
public Set<String> getDictionary(String fileName) {
File file = new File(fileName);
try {
Scanner input = new Scanner(file);
while (input.hasNextLine()) {
String word = input.nextLine().trim();
dictionary.add(word.toLowerCase());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return dictionary;
}
}
Это мой основной класс, где я вызываю функции.
public class SpellCheckerTester {
public static void main(String[] args) throws IOException {
SpellChecker checker = new SpellChecker("words.txt");
List<String> incorrectWords = checker.getIncorrectWords("test.txt");
for (String word : incorrectWords) {
List<String> suggestions = checker.getSuggestions(word);
System.out.print(word + " - ");
for (String suggestion : suggestions) {
System.out.print(suggestion + " ");
}
System.out.println();
}
}
}