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); } for (int i = 0; i < list.size(); i++) { // Убираем из массива цифры для дальнейшей обработки for (int y = 0; y < listOfNumbersChar.size(); y++) { if (list.get(i) == listOfNumbersChar.get(y)) { listForSumm.add(list.get(i)); list.remove(i); } } } 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(' '); list.add(Character.forDigit(sumOfNumbers, 10)); } } }