Подсчет отдельных слов - PullRequest
       15

Подсчет отдельных слов

0 голосов
/ 12 февраля 2020

как я могу посчитать отдельные слова в тексте, который занимает несколько строк?

Входные данные: Вы будете читать текст письма с клавиатуры. Он может занимать несколько строк и содержать только строчные буквы алфавита Engli sh и пробелы.

Выходные данные: будет отображаться одно целое число, представляющее количество различных слов в электронном письме.

У меня есть этот код:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String args[] ) throws Exception {
    Set<String> words = new TreeSet<>();
    int count = 0;
    try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){
        String line;
        while((line = reader.readLine()) != null){
            words.add(line);
            count++;
        }
    }catch(Exception e){
        e.printStackTrace();
    }
    System.out.println(count);
 }

В основном это работает только на тесте, но в остальном да, это неправильно, так как я понимаю, что это потому, что он все еще читает пустой пробел, что может Я ремонтирую?

1 Ответ

2 голосов
/ 12 февраля 2020

Измените

words.add(line);

, чтобы добавить слова из каждого line. Разделите на пустое пространство и добавьте полученные жетоны. Например,

words.addAll(Arrays.asList(line.split("\\s+")));

И затем измените

System.out.println(count);

на

System.out.println(words.size());

Наконец, исключите count (вам это не нужно, а Set «считает» элементы по количеству элементов в наборе, т.е. words.size()). И, если нет причин заказывать ваши элементы, используйте HashSet.

Set<String> words = new TreeSet<>();

Должно быть (насколько я могу судить)

Set<String> words = new HashSet<>();
...