import java.util.*; public class KataTest { public static void main(String[] args) { // Вызов метода textModifier в Main String newTextData = textModifier(); System.out.println(newTextData); } public static String textModifier() { FunctionsForTest fft = new FunctionsForTest(); // Считываем данные с консоли Scanner inputTextData = new Scanner(System.in); System.out.println("Введи текст:"); String inputTextDataString = inputTextData.nextLine(); // Функции преобразования List arrayForModify = fft.stringToArray(inputTextDataString); // 1 Преобразовали в массив fft.functionA((ArrayList) arrayForModify); // 2 Убрали пробелы (A) fft.functionB((ArrayList) arrayForModify); // 3 Поменяли местами, удалили "-" fft.functionC((ArrayList) arrayForModify); // 4 +>! (C) fft.functionD((ArrayList) arrayForModify); // 5 // Массив в строку StringBuilder sb = new StringBuilder(); for (char charFromArray : arrayForModify) { sb.append(charFromArray); } String finalText = sb.toString(); return finalText; } } class FunctionsForTest { List stringToArray(String textData) { // Преобразование строки в массив List charList = new ArrayList<>(); for (char c : textData.toCharArray()) { charList.add(c); } return charList; } void functionA(ArrayList list) { // Если в тексте между словами присутствует несколько пробелов подряд, // надо оставить только один из них. Для реализации этого подпункта // нельзя пользоваться методами replace() и replaceAll() Iterator iterator = list.iterator(); boolean manySpace = false; while (iterator.hasNext()) { char c = iterator.next(); if (c == ' ') { if (manySpace) { iterator.remove(); } manySpace = true; } else { manySpace = false; } } } void functionB(ArrayList list) { // Если в тексте присутствует знак минус (-), это значит, что символ // слева от этого знака надо поменять местами с символом, который стоит // справа от этого знака. Обратите внимание, что символом может быть // не только буква, но и цифра или любой другой знак/символ, в том // числе символ пробела. После смены символов местами, знак минус (-) // надо удалить из строки результата. for (int i = 0; i < list.size() - 1; i++) { if (list.get(i) =='-') { char left = list.get(i-1); char right = list.get(i+1); list.set(i-1, right); list.set(i+1, left); list.remove(i); } } } void functionC(ArrayList list){ // Если в тексте присутствует знак плюс (+), // вам необходимо заменить его на восклицательный знак (!). char plusMark = '+'; char attMark = '!'; for (int i = 0; i < list.size(); i++) { if (list.get(i) == plusMark) { list.set(i, attMark); } } } void functionD(ArrayList list){ ArrayList listOfNumbersChar = new ArrayList<>(); // Массив для сравнения ArrayList listForSumm = new ArrayList<>(); // Массив для хранения чисел и будущей суммы ArrayList listIntForSumm = new ArrayList<>(); // Массив для хранения integer for (char c = '0'; c <= '9'; c++) { // Создаем массив для проверки в сл цикле listOfNumbersChar.add(c); } Iterator iterator = list.iterator(); while (iterator.hasNext()) { Character ch = iterator.next(); if (listOfNumbersChar.contains(ch)) { listForSumm.add(ch); iterator.remove(); } } for (char c : listForSumm) { // Преобразование массива Char в Int int digit = Character.digit(c, 10); listIntForSumm.add(digit); } int sumOfNumbers = 0; // переменная для подсчета // Сумма чисел из массива for (int numbers : listIntForSumm) { sumOfNumbers += numbers; } // Проверяем сумму чисел, чтобы была больше нуля, если да, то преобразовываем в Char и добавляем if (sumOfNumbers > 0) { list.add(' '); String intString = Integer.toString(sumOfNumbers); for (int u = 0; u < intString.length(); u++) { list.add(intString.charAt(u)); } } } } // генрих1 играет+2 л-июбит0школу // генрих играет! илюбитшколу 3 // Я ю-лбю-л джаву всем сердцем+ // Я люблю джаву всем сердцем! // Я протс-етую+ Это тз2 я делал часов 5 // Аб 1 2 3-1 2 3+