Другие уже указали на ошибку в вашем коде. Тем не менее, одним общим улучшением было бы использование стеммера для предварительной обработки текста, а затем сравнение выходных данных с более управляемым набором "корневых" ругательств. Например, основа "щелчка" была бы "щелчком". Затем, вместо того, чтобы каждый раз проверять весь текст на предмет каждого проклятого слова, перебирайте каждое предварительно обработанное слово в тексте и проверяйте, соответствует ли оно любому из ваших проклятых слов с основанием.
Другие более очевидные меры предварительной обработки заключаются в удалении всех знаков препинания и переводе всего текста в нижний регистр.
Set<String> stemmedCurseWords = new HashSet<String>();
stemmedCurseWords.add("flip");
stemmedCurseWords.add("gosh");
String text = "I was flipping late for work again."
boolean foundCurseWord = false;
String[] stemmedText = preprocess(text);
for (String word : stemmedText) {
if (stemmedCurseWords.contains(word)) {
foundCurseWord = true;
break;
}
}
if (foundCurseWord) {
System.err.println("Bad manners");
}