Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 5

Задан текст (String) и массив стринговый со словами

08.04.2015, 23:45. Показов 3160. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно найти, в скольких предложениях встречается слово с массива.

Я код написал, но вот в чем суть. Суть в том, что программка не ищет "строгие" слова. То есть например, если слово "компьютерам"лежит в первом предложении, а слово "компьютер" лежит в пятом предложении и при этом надо найти слово "компьютер", программка выдает, что слово "компьютер" лежит в двух предложениях. Как сделать так, чтобы программка искала строго те слова, которые заданы?
Я пробовал делать новый массив из всех слов через .split("\\s") и проверять каждое слово методом .equals(), но что-то не повелось. Помогите пожалуйста разобраться в этой проблеме. Интересно даже не для того, что надо здать, а именно для самого себя.

Ниже кидаю написанный код.

Заранее спасибо за ответы и внимание.

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class lab3 {
 
    public static final String text = "Язык программирования — это искусственный язык, созданный для передачи команд машинам, в частности компьютерам.\n" +
                                      "Языки программирования используются для создания программ, которые контролируют поведение машин, и записи алгоритмов.\n" +
                                      "Более строгое определение: язык программирования - это система обозначений для описания алгоритмов и структур данных.\n" +
                                      "Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих\n" +
                                      "внешний вид программы и действия, которые выполняет исполнитель (компьютер) под ее управлением?\n" +
                                      "Со времени создания первых программируемых машин было создано более двух с половиной тысяч языков программирования!\n" +
                                      "Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей.\n" +
                                      "Профессиональные программисты обычно применяют в своей работе несколько языков программирования.";
 
    public static void main(String[] args) {
        String[] bufferString = text.split("[\\.\\!\\?]");
        //String[] bufferWord = text.split("[\\s\\.\\,\\—\\(\\)\\n]");
        String[] word = {"структур "," fghdkjghdjg "," программируемых "," число "," и "," вид "," это "," количество "," Programming "," машинам "," языках "," программисты "," программирование ", "структура", "алгоритмы", "компьютер"};
 
        System.out.println(text);
 
        /*for (int i = 0; i < word.length; i++) {
            for (int j = 0; j < bufferWord.length; j++) {
                if (word[i].equals(bufferWord[j]))
                    System.out.println("'" + bufferWord[j] + "' и '" + word[i] + "' идентичные"/* +" "+ word[i].equals(bufferWord[j]));
            }
        }
*/
        System.out.println();
 
        System.out.print("Слова, которых нету в тексте из искомых: ");
        for (int i = 0; i < word.length; i++) {
            if (!text.contains(word[i]))
                System.out.print("'" + word[i] + "'; ");
        }
 
        System.out.println();
        System.out.println();
 
 
 
        int repeat = 0;
        for (int i = 0; i < word.length; i++) {
            for (int j = 0; j < bufferString.length; j++) {
                //if (bufferString[j].contains(word[i]))
                //{
                //    System.out.println("Слово '" + (word[i]) + "' лежит в предложении №" + (j + 1));
                //}
                if (bufferString[j].contains(word[i])) {
                    repeat++;
                }
            }
            if (!(repeat == 0))
            {
                System.out.println("Слово '" + word[i] + "' лежит в " + repeat + "-и предложениях");
                repeat = 0;
            }
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.04.2015, 23:45
Ответы с готовыми решениями:

массив стринговый
привет всем. подскажите такую маленькую деталь пожалуйста. class Program { static void Main(string args) { ...

Можно ли создать двумерный стринговый массив?
мне надо загнать в двумерный массив два значения - шифр графика и первое поле таблицы. Выдается ошибка. Где я неправ? const MassivCo:...

Чем по умолчанию заполняется объявленный стринговый массив в шарпе?
Чем заполняется объявленный стринговый массив в шарпе? string mas = new string;

8
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
09.04.2015, 08:02
Цитата Сообщение от Hofter Посмотреть сообщение
if (bufferString[j].contains(word[i]))
можно попробовать дополнительно сравнивать длину слов методом length

Цитата Сообщение от Hofter Посмотреть сообщение
.equals(), но что-то не повелось.
почему?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
09.04.2015, 09:14
бей так text.split("\\w+");
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 5
27.04.2015, 23:27  [ТС]
Добавлено через 34 секунды
Не могу склепать вместе. Через .equals() ищет количество повторений слова во всем тексте. Через .contains() ищет слова "не строго" по заданному значению, но по предложениях. Как сделать так, чтобы работало? Подскажите пожалуйста, буду очень благодарен.
0
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 38
28.04.2015, 01:09
в моем топике вы попросили о помощи.
уже полтора года не занимаюсь java, но нарыл тот быдлокод, что у меня получился после того самого топика:
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
38
39
40
41
42
43
// 1.7 Из текста удалить все слова заданной длины, начинающиеся на согласную букву.
//
import static java.lang.System.out;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
 
public class cl_lar17 
{
    public static void main(String[] args) throws IOException
    {
        out.println("Введите текст: ");
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String text = reader.readLine();
        
        out.println("Введите интересующую длину слова, которое надо удалить: ");
        int k = Integer.parseInt(reader.readLine());
        
        String[] words = text.split(" "); // [\\s\\.\\!\\?\\,]
        for(int i=0;i<words.length;i++)
        {
            char first = words[i].charAt(0);
            if((words[i].length()%k == 0) && ((first == 'a')&&(first == 'e')&&(first == 'i')&&(first == 'o')&&(first == 'u')&&(first == 'y')))
                words[i] = null;
            System.out.print(words[i]+" ");
        }
/*
 * for (int i=0;i<strArr.length;i++){
            char first = strArr[i].charAt(0); // первая буква каждого слова
            if((strArr[i].length()%5==0)  &&  ((first = 'a')&&(first = 'e')&&(first = 'i')&&(first = 'o')&&(first = 'u')&&(first = 'y'))){
                strArr[i]="";
              }
 * array arra arrra  arra array urrea yeeee ooooo iiiii uuuuu yyyyy eeeee   
 */
        for(int i=0;i<words.length;i++)
            out.printf("%s ", words[i]);
        
        
        
    }
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
28.04.2015, 15:02
В этом случае реализация зависит от определения сущности "слово".

Вот реализация, понимающая слово как набор символов русского или латинского алфавита. Сравнение регистрозависимое.

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
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
 
public class Testy {
 
    private static final String TEXT = "Язык программирования — это искусственный язык, созданный для передачи команд машинам, в частности компьютерам.\n" +
            "Языки программирования используются для создания программ, которые контролируют поведение машин, и записи алгоритмов.\n" +
            "Более строгое определение: язык программирования - это система обозначений для описания алгоритмов и структур данных.\n" +
            "Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих\n" +
            "внешний вид программы и действия, которые выполняет исполнитель (компьютер) под ее управлением?\n" +
            "Со времени создания первых программируемых машин было создано более двух с половиной тысяч языков программирования!\n" +
            "Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей.\n" +
            "Профессиональные программисты обычно применяют в своей работе несколько языков программирования.";
 
    private static final String[] WORDS_TO_SEARCH = {"структур","fghdkjghdjg","программируемых","число","и", "вид",
            "это","количество","Programming","машинам","языках","программисты","программирование", "структура",
            "алгоритмы", "компьютер"};
 
    public static void main(String[] args) {
        final Set<String> words = new HashSet<>(Arrays.asList(TEXT.split("[^A-Za-zА-Яа-я]+")));
 
        final Set<String> wordsNotFound = new HashSet<>(Arrays.asList(WORDS_TO_SEARCH));
        wordsNotFound.removeAll(words);
 
        System.out.println(words);
        System.out.println(wordsNotFound);
    }
}
Добавлено через 59 минут
Пардон, плохо прочитал задачу.

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
38
39
40
41
42
43
44
45
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
 
public class Testy {
 
    private static final String TEXT = "Язык программирования - это искусственный язык, созданный для передачи команд машинам, в частности компьютерам.\n" +
            "Языки программирования используются для создания программ, которые контролируют поведение машин, и записи алгоритмов.\n" +
            "Более строгое определение: язык программирования - это система обозначений для описания алгоритмов и структур данных.\n" +
            "Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих\n" +
            "внешний вид программы и действия, которые выполняет исполнитель (компьютер) под ее управлением?\n" +
            "Со времени создания первых программируемых машин было создано более двух с половиной тысяч языков программирования!\n" +
            "Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей.\n" +
            "Профессиональные программисты обычно применяют в своей работе несколько языков программирования.";
 
    private static final String[] WORDS_TO_SEARCH = {"структур","fghdkjghdjg","программируемых","число","и", "вид",
            "это","количество","Programming","машинам","языках","программисты","программирование", "структура",
            "алгоритмы", "компьютер"};
 
    public static void main(String[] args) {
        // все предложения
        final List<Set<String>> sentences = Arrays.stream(TEXT.split("[.!?]\\s*"))
                        .map(s -> new HashSet<>(Arrays.asList(s.split("[\\p{Punct}\\s]+"))))
                        .collect(Collectors.toList());
 
        // все слова
        final Set<String> allWords = sentences.stream().flatMap(Collection::stream).collect(Collectors.toSet());
 
        // количество предложений, в которых используется слово
        final Map<String, Long> wordUsagesInSentence = Arrays.stream(WORDS_TO_SEARCH)
                .collect(Collectors.toMap(Function.<String>identity(),
                        word -> sentences.stream().filter(c -> c.contains(word)).count()));
 
        // слова не использовавшиеся ни в одном предложении
        final Set<String> wordsNotFound = wordUsagesInSentence.entrySet().stream()
                .filter(s->s.getValue() == 0)
                .map(Map.Entry::getKey)
                .collect(Collectors.toSet());
 
        System.out.println(wordUsagesInSentence);
        System.out.println(wordsNotFound);
        System.out.println(sentences);
        System.out.println(allWords);
    }
}
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 5
28.04.2015, 17:06  [ТС]
Спасибо конечно, но если честно, лабка должна использовать "говнокодные" конструкции через if, else, циклы. То есть именно так, как в моем не совсем рабочем примером.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
28.04.2015, 20:54
Велосипедов хватит на всех.
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
38
39
40
41
import java.util.*;
 
public class Testy {
 
    private static final String TEXT = "Язык программирования - это искусственный язык, созданный для передачи команд машинам, в частности компьютерам.\n" +
            "Языки программирования используются для создания программ, которые контролируют поведение машин, и записи алгоритмов.\n" +
            "Более строгое определение: язык программирования - это система обозначений для описания алгоритмов и структур данных.\n" +
            "Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих\n" +
            "внешний вид программы и действия, которые выполняет исполнитель (компьютер) под ее управлением?\n" +
            "Со времени создания первых программируемых машин было создано более двух с половиной тысяч языков программирования!\n" +
            "Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей.\n" +
            "Профессиональные программисты обычно применяют в своей работе несколько языков программирования.";
 
    private static final String[] WORDS_TO_SEARCH = {"структур","fghdkjghdjg","программируемых","число","и", "вид",
            "это","количество","Programming","машинам","языках","программисты","программирование", "структура",
            "алгоритмы", "компьютер"};
 
 
    public static void main(String[] args) {
        final List<Set<String>> sentencesByWords = new ArrayList<>();
        for (final String sentence : TEXT.split("[.!?]\\s*")) {
            sentencesByWords.add(new HashSet<>(Arrays.asList(sentence.split("[\\p{Punct}\\s]+"))));
        }
 
        final Set<String> wordsToSearch = new HashSet<>(Arrays.asList(WORDS_TO_SEARCH));
 
        final Map<String, Integer> counter = new HashMap<>();
        for (final String wordToSearch : wordsToSearch) {
            if (!counter.containsKey(wordToSearch)) {
                counter.put(wordToSearch, 0);
            }
            for (final Set<String> sentence : sentencesByWords) {
                if (sentence.contains(wordToSearch)) {
                    counter.put(wordToSearch, counter.get(wordToSearch) + 1);
                }
            }
        }
 
        System.out.println(counter);
    }
}
1
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 5
29.04.2015, 17:42  [ТС]
Спасибо огромное!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2015, 17:42
Помогаю со студенческими работами здесь

Задан текст. Сформировать массив длины заданного текста
Задан текст. Сформировать массив длины заданного текста

Разделить текст из textbox на массив string
Вот думал, что просто вроде, но опять-таки не удалось. Пользователь вводит текст в textBox, по нажатию кнопки текст преобразуется в...

Преобразовать латинский текст string в русский текст string
Пишу приложение, которое мне будет отправлять в твиттер нужные сообщения. Встретился со следующей головоломкой (сразу хочу сказать, что...

Ввести текст.Отредактировать текст,удаляя из него лишние пробеоы,оставляя только по одному пробелу между словами
Ввести текст.Отредактировать текст,удаляя из него лишние пробеоы,оставляя только по одному пробелу между словами

Задан некоторый текст и матрица-ключ, в которой каждой букве поставлено число. Зашифруйте текст
Задано некоторый текст и матрица-ключ, в которой каждой букве украинского алфавита поставлено в соответствие некоторое число. Использовав...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru