/
alex_ep0411
/
java_lab4
Обзор
Документация
Войти
/
alex_ep0411
/
java_lab4
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/core/DataProcessor.java
76 строк
3 KB
александр
лабораторная работа 4
08 июн 2026, 13:54
08 июн 2026, 13:54
27f3b27
Код
Авторство
О чём код?
package core; import java.util.*; import java.util.stream.Collectors; public class DataProcessor { /** * Основной метод конвейера: String[] → обработка → String[] * @param inputLines массив строк, каждая строка должна содержать целое число * @return массив строк с заменами последовательностей на диапазоны [a-b] */ public static String[] processPipeline(String[] inputLines) { // 1. Преобразуем строки в числа List<Integer> numbers = new ArrayList<>(); for (String line : inputLines) { try { numbers.add(Integer.parseInt(line.trim())); } catch (NumberFormatException e) { System.err.println("Пропуск некорректного ввода: " + line); } } // 2. Вызываем бизнес-логику (вариант 14) List<Object> processed = processVariant14(numbers); // 3. Преобразуем List<Object> обратно в String[] return processed.stream() .map(Object::toString) .toArray(String[]::new); } /** * Вариант 14: заменяет последовательные целые числа диапазоном [start-end] * {1,2,3,5,6,7,9,11,12,13} → [1-3, 5-7, 9, 11-13] * @param list входной список целых чисел (уже отсортирован, как в примере) * @return список с Integer и String в нужном порядке */ public static List<Object> processVariant14(List<Integer> list) { if (list == null || list.isEmpty()) return new ArrayList<>(); List<Object> result = new ArrayList<>(); int start = list.get(0); int prev = start; for (int i = 1; i < list.size(); i++) { int curr = list.get(i); if (curr != prev + 1) { // разрыв последовательности addRangeOrSingle(result, start, prev); start = curr; } prev = curr; } // добавляем последнюю группу addRangeOrSingle(result, start, prev); return result; } // Добавьте этот метод в класс DataProcessor public static List<Integer> convertToIntegers(List<String> lines) throws NumberFormatException { List<Integer> numbers = new ArrayList<>(); for (String line : lines) { numbers.add(Integer.parseInt(line.trim())); } return numbers; } private static void addRangeOrSingle(List<Object> result, int start, int end) { if (start == end) { result.add(start); // Integer } else { result.add("[" + start + "-" + end + "]"); // String } } }