Я написал фрагмент кода для печати частоты слов в строке, но если я введу несколько пробелов, я получу количество пробелов в выводе.
//import the necessary packages if needed
import java.util.*;
@SuppressWarnings("unchecked")//Do not delete this line
public class CountOfWords
{
public static void main (String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Enter Student's Article");
StringBuilder sb=new StringBuilder(sc.nextLine());
String str=sb.toString().toLowerCase().replaceAll("[,;:.?!]","");
List<String> list = Arrays.asList(str.split(" "));
System.out.println("Number of words "+list.size());
SortedSet<String> uniqueWords = new TreeSet<String>(list);
System.out.println("Words with the count");
for(String s:uniqueWords)
{
int freq=Collections.frequency(list,s);
System.out.println(s+": "+freq);
}
}
}
Запуск программы:
Enter Student's Article
hello Hello HEllo hi hi: hi! Welcome, welcome
Number of words 10
Words with the count
: 2
hello: 3
hi: 3
welcome: 2
Как мне это исправить?