Аватар для haseki
4 / 4 / 1
Регистрация: 02.11.2013
Сообщений: 164

Подсчет количества слов в предложении

08.05.2015, 17:44. Показов 9173. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: посчитать количество слов в предложении, введенном пользователем с клавиатуры.
Решение с использованием HashMap:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.util.regex.*;
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
public class WordCounter {
 
    public static void main(String[] args) {
        String message;
        System.out.println("Введите предложение: ");
        Scanner sc = new Scanner(System.in);
        message = sc.nextLine(); // ввод значений строки
        try {
            /*Разбить предложение на слова, не считая знаки препинания частью слова.
            * Слова записываются в массив строк*/
            String[] words = message.replaceAll("[-.?!)(,:]", "").split("\\s");
 
            Map<String, Integer> counter = new HashMap<>();
            for (String i : words) {
                if (!i.isEmpty()) {
                    Integer count = counter.get(i);
                    if (count == null) {
                        count = 0;
                    }
                    counter.put(i, ++count);
                }
            }
 
            for (String j : counter.keySet()) {
                System.out.println(j + ": " + counter.get(j));
            }
        }
        catch (PatternSyntaxException e){
            System.out.println("Ошибка регулярного выражения!");
            e.printStackTrace();
        }
    }
}
Можно ли как-то оптимизировать этот код? Как решить эту задачи без HashMap? Например, с помощью массивов? Или лучше не заморачиваться?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2015, 17:44
Ответы с готовыми решениями:

Подсчет количества слов
Здравствуй! Я тут писал программку для подсчета количества слов (только прошел тему строк и массивов), но что-то пошло не так. В таких...

Подсчет количества слов в строке
Я написал небольшой код по подсчету слов в строке. Код писался в редакторе на Windows и также на планшете в Андроид в AIDE До...

Подсчет количества слов
Доброго времени суток, друзья! Нужна помощь!Есть небольшая программа для подсчета слов в тексте, но нужно добавить в неё фильтр, чтобы в...

4
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
08.05.2015, 17:54
haseki
Варианты без массивов и коллекций:
1. Использовать хитрое регулярное выражение (у меня опыта в них мало, но решения такие тут где-то видел).
2. Последовательно перебрать все символы строки, увеличивая счётчик слов на единицу на каждом встреченном пробеле (или группе пробелов).
1
 Аватар для Sanan07
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
08.05.2015, 17:56
Java
1
2
3
4
5
6
7
8
static int numberOfWordsInSentence(String S) {
                
                String [] SS = S.split("[-#$%^&!?,.0-9\\s]+");
                System.out.println(Arrays.toString(SS));
                
                return SS.length;
                
            }
1
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
08.05.2015, 17:57
Поспешил, не посмотрел на код, а из текста задачи не очевидно. Количество вхождений каждого слова через последовательный перебор просто так не посчитаешь, придётся-таки где-нибудь запоминать.
1
 Аватар для Sanan07
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
08.05.2015, 18:06
или
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
static int numberOfWordsInSentence(String S) {
                
                int num = 0;
                
                Pattern p = Pattern.compile("[a-zA-Zа-яА-Я]+");
                Matcher m = p.matcher(S);
                
                while(m.find()) {
                    num++;
                }
                
                return num;
                
            }
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2015, 18:06
Помогаю со студенческими работами здесь

Неправильный подсчет количества слов, если вначале пробел или отступ
Здравствуйте! Каким образом можно исправить такой недочет, я ввожу текст в текстовую область в своей программке (код внизу) и если...

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

Подсчет количества слов в предложении
program stroki; var s1, s2: string; i, k1, k2: byte; begin write('Введите первое предложение: '); readln(s1); write('Введите...

Подсчёт количества слов в предложении
Помогите пожалуйста, нужно написать программу ,которая посчитает сколько слов в предложении

Подсчет количества слов в предложении
Здравствуйте. Помогите, пожалуйста, с лабой. 1. Дана строка символов. Распечатать слова, отличные от последнего, оставив в каждом слове...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru