Содержимое моего тестового файла: reader.close,polo,world,hren,world,worlds,worldworld
Вроде задание очевидно, считай слова world между знаками препинания.
Посчитал их 2. Ошибка программа считает не все слова world в файле! Переделываю - теперь считаю и worlds и worldworld(код ниже) - всего 5. Валидатор говорит программа находит слишком много слов world! Беру решение которое решал пару лет назад и которое прошло в прошлый раз(там к слову считались строго world между знаками препинания - всего 2) - тоже не проходит говорит программа считает не все слова world. Фантазия иссякла обращаюсь к коллективному разуму.
package com.javarush.task.task19.task1907;
/*
Считаем слово
c:\0\1.txt
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileReader freader = new FileReader(reader.readLine());
reader.close();
ArrayList<Character> list = new ArrayList<>();
while(freader.ready()){
list.add((char) freader.read());
}
//ArrayList<String[]> slist = new ArrayList<>();
freader.close();
String s="";
for(int i=0;i<list.size();i++){
s = s+list.get(i);
}
//заменить знаки препинания пробелами
s = s.replaceAll("\\p{Punct}", " ");
//строку в массив - разделитель пробел
String[] arr = s.split(" ");
int count=0;
for(int i=0;i<arr.length;i++){
if(arr[i].equals("world")){
count++;
}
}
System.out.println(count);
}
}