После некоторой отладки я думаю, что нашел решение.Эта проблема очень сложна, так как вам приходится использовать несколько различных сканеров, программ для чтения файлов и т. Д. Вот что я сделал:
Я изменил способ добавления в свой набор StopWords, так как он не добавлял их правильно.Я использовал читатель с буферизацией, чтобы прочитать каждую строку, затем сканер, чтобы прочитать каждое слово, а затем добавил его в набор.
Затем, когда вы сравнили их, я избавился от одного из ваших циклов, так как вы можете легко использовать метод .contains (), чтобы проверить, было ли слово stopWord.
Я оставил вас, чтобы выполнить часть записи в файл, чтобы убрать стоп-слова, так как я уверен, что вы можете понять это сейчас, когда все остальное работает.
-Мойпримерные стоп-слова txt файл: стоп-слова Words
-Мой входной файл сэмплов был точно таким же, поэтому он должен перехватывать все три слова.
Код:
// create file reader and go over it to save the stopwords into the Set data structure
BufferedReader readerSW = new BufferedReader(new FileReader("stopWords.txt"));
Set<String> stopWords = new LinkedHashSet<String>();
String stopWordsLine = readerSW.readLine();
while (stopWordsLine != null) {
// trim() eliminates leading and trailing spaces
Scanner words = new Scanner(stopWordsLine);
String word = words.next();
while(word != null) {
stopWords.add(word.trim()); //Add the stop words to the set
if(words.hasNext()) {
word = words.next(); //If theres another line, read it
}
else {
break; //else break the inner while loop
}
}
stopWordsLine = readerSW.readLine();
}
BufferedReader outp = new BufferedReader(new FileReader("Words.txt"));
String line = outp.readLine();
while(line != null) {
Scanner lineReader = new Scanner(line);
String line2 = lineReader.next();
while(line2 != null) {
if(stopWords.contains(line2)) {
System.out.println("removing " + line2);
}
if(lineReader.hasNext()) { //If theres another line, read it
line2 = lineReader.next();
}
else {
break; //else break the first while loop
}
}
lineReader.close();
line = outp.readLine();
}
OutPut:
removing Stop
removing words
removing Words
Дайте мне знать, могу ли я подробнее рассказать о своем коде или почему я что-то сделал!