В настоящее время я создаю программу, которая читает файл и печатает наиболее часто встречающиеся слова, и сколько раз каждое слово выглядит так:
package WordLookUp;
import java.util.*;
import java.io.*;
import java.lang.*;
public class WordLookUp {
private String[] mostWords;
private Scanner reader;
private String line;
private FileReader fr;
private BufferedReader br;
private List<String> original;
private String token = " ";
public WordLookUp(String file) throws Exception {
this.reader = new Scanner(new File(file));
this.original = new ArrayList<String>();
while (this.reader.hasNext()) { //reads file and stores it in string
this.token = this.reader.next();
this.original.add(token); //adds it to my arrayList
}
}
public void findMostOccurringWords() {
List<String> mostOccur = new ArrayList<String>();
List<Integer> count = new ArrayList<Integer>();
int counter = 0;
this.mostWords = this.token.split(" "); //storing read lines in mostWords arrayList
try {
for (int i = 0; i < original.size(); i++) {
if (this.original.equals(this.mostWords[i])) {
counter++; //increase counter
mostOccur.add(this.mostWords[i]);
count.add(counter);
}
}
for (int i = 0; i < mostOccur.size(); i++) {
System.out.println("Word: " + mostOccur.get(i) + " count: " + count.get(i));
}
} catch (ArrayIndexOutOfBoundsException ae) {
System.out.println("Illegal index");
}
}
}
package WordLookUp;
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
WordLookUp wL = new WordLookUp("tiny1.txt");
wL.findMostOccurringWords();
}
}
Поэтому, когда я продолжаю запускать свой файл, оно выдает исключениеЯ дал это: «Нелегальный индекс».Я думаю, что это мой findMostOccuringWords
метод.Мне логика кажется правильной, но я не знаю, почему она выбрасывает ArrayIndexOutOfBoundsException
.Я попытался поиграть с циклами for и попытался перейти с int i = 0 to i < mostOccur.size() - 1
, но это тоже не работает.Моя логика неверна?Мне не разрешено использовать hashmap
, и наш профессор намекнул, что мы можем легко выполнить это назначение с массивами и ArrayLists
(никаких других встроенных функций нет, но регулярные выражения настоятельно рекомендуется использовать также и для остальныхназначение).Я положил туда частные FileReader
и BufferedReader
, пытаясь понять, будут ли они работать лучше или нет.Спасибо за совет!