Исходный код считывал входные данные по одной строке за раз, используя tempFileReader.readLine()
, а затем искал конец строк в каждой строке, используя matcher
.Поскольку lineContents
содержит только одну строку, matcher
никогда не находит новую строку, поэтому остальная часть кода пропускается.Зачем вам нужно два разных бита кода, чтобы разбить ввод на строки?Вы можете удалить один из фрагментов кода, связанных с поиском новых строк.Например,
while ((lineContents = tempFileReader.readLine()) != null)
{
Pattern tagFinder = Pattern.compile("word"); //Finding the word required
Matcher tagMatcher = tagFinder.matcher(lineContents);
while(tagMatcher.find())
{
score++;
}
scoreTracker.add(score);
score = 0;
}
Я пробовал приведенный выше код, используя файл test.txt в Windows, читаемый BufferedReader
.Например,
BufferedReader tempFileReader = new BufferedReader(new FileReader("c:\\test\\test.txt"));
ScoreTracker содержит [0, 1, 0, 3, 0, 0] для файла, содержание которого вы описываете.Я не понимаю, как вы получили [4,4,4,4,4,4] из исходного кода, если в качестве примера ввода используется фактический файл, как описано, а tempFileReader
- это BufferedReader
.Было бы полезно увидеть код, который вы используете для настройки tempFileReader
.