подскажите пожалуйста что упустил в1 способе решения ? тестирую на файле, исправно считает
package com.javarush.task.task19.task1907;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Pattern;
/*
Считаем слово
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String name=bf.readLine();
BufferedReader reader = new BufferedReader(new FileReader(name));
int count=0;
//1способ
/*Посдкажите что делает данное регулярное выражение с \p{Punct}
line = line.replaceAll("\\p{Punct}", "");
-через \p{} обозначаются символьные классы.
Список классов для Java можно посмотреть в документации к Pattern:
В частности по \p{Punct} в документации написано:
*/
while (reader.ready()) {
String[] strings = reader.readLine().split(" ");
for (String s:strings){
if (Pattern.matches("world\\p{Punct}",s)||Pattern.matches("world",s)){ // \p{Punct} Знаки пунктуации: Один из !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
count++;}
// System.out.println(s);
}
}
//2способ
/*
String s="";
while ((s=reader.readLine())!=null){//прекратить цикл если считывание строки будет пустой
count+=(" "+s+" ").split("\\bworld\\b").length-1;//управляющая последовательность /b-граница слова;length -нужно чтобы в переменную count сложить
System.out.println(s);
}
*/
/*
while (reader.ready()) {
String[] strings = reader.readLine().split(" ");
for (String s:strings){
if (Pattern.matches("world.",s)||Pattern.matches("world",s)){
count++;}
System.out.println(s);
}
}
*/
System.out.println(count);
bf.close();
reader.close();
}
}