Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.12.2019
Сообщений: 23

Строки сортируются по убыванию количества в них запятых. Если запятых одинаково, то по возрастанию точек

18.05.2020, 14:17. Показов 740. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, что то не могу понять как это сделать)
Буду благодарна за помощь!
Задание таково: Строки сортируются по убыванию количества в них запятых. Если запятых одинаково, то по возрастанию точек.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2020, 14:17
Ответы с готовыми решениями:

Подсчет количества точек и запятых в строке
Создал систему подсчета знаков пунктуации т.е ( , и . ).Теперь нужно сделать так,чтобы когда я вводил "...,,,.. " он считал...

Составьте программу подсчета общего количества точек и запятых во введенной с клавиатуры строке s
Составьте программу подсчета общего количества точек и запятых во введенной с клавиатуры строке s.

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

10
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
18.05.2020, 14:48
Помоему все достаточно просто. Считаешь запятые и сортируешь по ним. Ну у тебя прям в здании уже написано что делать, в чем проблема?

Добавлено через 23 минуты
Есть вот такое "сложное" решение, если тебе нужно только решение.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 public static void main(String[] args) {
        String[] arr = new String[5];
        arr[0]="Строка с тремя точками... и 2 запятыми,,";
        arr[1]="Строка с шестью точками...... и 4 запятыми,,,,";
        arr[2]="Строка с одной точкой. и одной запятой,";
        arr[3]="Строка с пятью точками..... и 5 запятыми,,,,,";
        arr[4]="Строка с двумя точками.. и 5 запятыми,,,,,";
        Arrays.stream(arr)
                .sorted(Comparator.comparing(o -> Main.countChars(o.toString(),','))
                        .reversed()
                        .thenComparing(o -> Main.countChars(o.toString(),'.')))
                .forEach(System.out::println);
    }
 
    public static int countChars(String str, char c) {
        int counter = 0;
        for (Character character :
                str.toCharArray()) {
            if (character.equals(c))
                counter++;
        }
        return counter;
    }
Добавлено через 57 секунд
Если же хочешь полегче, то пиши и задавай вопросы. Кстати метод countChars(String str, char c) можешь позаимствовать в свое новое решение которое будет "полегче", там он тоже пригодится.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.05.2020, 15:19
StepFather322, посчитай, для разнообразия, сколько раз будет вызван метод countChars в твоем примере
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
18.05.2020, 15:32
Цитата Сообщение от xoraxax Посмотреть сообщение
сколько раз будет вызван метод countChars в твоем примере
18, а что?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.05.2020, 15:41
а теперь сделай 10 строк
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
18.05.2020, 16:38
Не охота создать новую тему, к тому же я решаю эту же задаучу, поэтому спрошу тут:
вот есть у меня стрим, он через одно место, но все же
Java
1
2
3
4
5
6
Map<String, List<Integer>> sentencesMap = Main.createMap(arr);
        sentencesMap
                .entrySet()
                .stream()
                .sorted(Comparator.comparingInt(stringListEntry -> stringListEntry.getValue().get(0)).reversed())
                .forEach(stringListEntry -> System.out.println(stringListEntry.getKey()));
Проблема в том, что до того как я пишу .reversed() я через stringListEntry могу получить доступ к листу.
Но после того как я добавляю reversed() в конце, у меня stringListEntry резко становится Object и я ничего уже не могу получить. Как так? Каким образом метод примененний к объекту, может повлиять на результат другого метода?

Добавлено через 1 минуту
Кусок кода выше не работает, getValue() красный, ибо stringListEntry стал Object, хотя был листом до reversed()
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.05.2020, 16:56
Comparator.<Map.Entry<String, List<Integer>>>comparingInt
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
18.05.2020, 17:25
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
public class Main {
    public static void main(String[] args) {
        String[] arr = new String[5];
        arr[0] = "Строка с тремя точками... и 2 запятыми,,";
        arr[1] = "Строка с шестью точками...... и 4 запятыми,,,,";
        arr[2] = "Строка с одной точкой. и одной запятой,";
        arr[3] = "Строка с пятью точками..... и 5 запятыми,,,,,";
        arr[4] = "Строка с двумя точками.. и 5 запятыми,,,,,";
        Map<String, List<Integer>> sentencesMap = Main.createMap(arr);
        sentencesMap
                .entrySet()
                .stream()
                .sorted(Comparator.<Map.Entry<String, List<Integer>>>comparingInt(value -> value.getValue()
                        .get(0))
                        .reversed()
                        .thenComparingInt(value -> value.getValue().get(1)))
                .forEach(stringListEntry -> System.out.println(stringListEntry.getKey()));
    }
 
    public static Map<String, List<Integer>> createMap(String[] sentences) {
        Map<String, List<Integer>> sentencesMap = new LinkedHashMap<>();
        for (String sentence :
                sentences) {
            ArrayList<Integer> amountOfCommasAndDots = new ArrayList<>();
            amountOfCommasAndDots.add(Main.countChars(sentence, ','));
            amountOfCommasAndDots.add(Main.countChars(sentence, '.'));
            sentencesMap.put(sentence, amountOfCommasAndDots);
        }
        return sentencesMap;
    }
 
    public static int countChars(String str, char c) {
        int counter = 0;
        for (Character character :
                str.toCharArray()) {
            if (character.equals(c))
                counter++;
        }
        return counter;
    }
}
Ну вообщем да..
Лучше было бы, наверное, все в другой класс Sentence вынести с полями в виде кол-ва запятых и точек, но уже так сделал.
Есть еще варианты, как лучше хранить колво точек и запятых? Понимаю что в листе, в пером и втором индексе, не лучшая идея.
0
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
18.05.2020, 18:21
Можно в long запихать
Java
1
2
3
4
        Map<String,Long> map = Stream.of(arr).collect(toMap(Function.identity(),
                s -> s.chars().mapToLong(c -> c == ',' ? - (1L << 32) : c == '.' ? 1L : 0L).sum()));
 
        Stream.of(arr).sorted(Comparator.comparingLong(map::get)).forEach(System.out::println);
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.05.2020, 18:52
Цитата Сообщение от vcrop Посмотреть сообщение
c -> c == ',' ? - (1L << 32) : c == '.' ? 1L : 0L).sum())
ну нельзя такой код писать
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
18.05.2020, 19:01
Цитата Сообщение от vcrop Посмотреть сообщение
(c -> c == ',' ? - (1L << 32) : c == '.' ? 1L : 0L)
выглядит очень страшно...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2020, 19:01
Помогаю со студенческими работами здесь

Как убрать из строки всё кроме: цифр, точек и запятых?
Как убрать из строки всё кроме: цифр, точек и запятых?

Из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить подстроку
Из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить подстроку, задающую вещественное число с фиксированной точкой. ...

Из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить подстроку, задающую вещественное
ооочень нужна помощь, задание даже понять особо не могу. нужно из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить...

Из строки, состоящей из букв, цифр, запятых, точек, знаков + и - , выделить подстроку, соответствующую записи целого
помогите дописать программу Из строки, состоящей из букв, цифр, запятых, точек, знаков + и – , выделить подстроку, которая соответствует...

Посчитать количество точек и запятых в строке
вобщем большая просьба исправить маленькие недочёты в программе на языке Ассемблер..сделать это надо до 7-8 утра!!вот такая сложная...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru