Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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<Character> arrayForModify = fft.stringToArray(inputTextDataString); // 1 Преобразовали в массив
- fft.functionA((ArrayList<Character>) arrayForModify); // 2 Убрали пробелы (A)
- fft.functionB((ArrayList<Character>) arrayForModify); // 3 Поменяли местами, удалили "-"
- fft.functionC((ArrayList<Character>) arrayForModify); // 4 +>! (C)
- fft.functionD((ArrayList<Character>) arrayForModify); // 5
- // Массив в строку
- StringBuilder sb = new StringBuilder();
- for (char charFromArray : arrayForModify) {
- sb.append(charFromArray);
- }
- String finalText = sb.toString();
- return finalText;
- }
- }
- class FunctionsForTest {
- List<Character> stringToArray(String textData) {
- // Преобразование строки в массив
- List<Character> charList = new ArrayList<>();
- for (char c : textData.toCharArray()) {
- charList.add(c);
- }
- return charList;
- }
- void functionA(ArrayList<Character> list) {
- // Если в тексте между словами присутствует несколько пробелов подряд,
- // надо оставить только один из них. Для реализации этого подпункта
- // нельзя пользоваться методами replace() и replaceAll()
- Iterator<Character> 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<Character> 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<Character> 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<Character> list){
- ArrayList<Character> listOfNumbersChar = new ArrayList<>(); // Массив для сравнения
- ArrayList<Character> listForSumm = new ArrayList<>(); // Массив для хранения чисел и будущей суммы
- ArrayList<Integer> 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));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement