Advertisement
stalin_bro

Kata

Dec 9th, 2024
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.96 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class KataTest {
  4.     public static void main(String[] args) {
  5.  
  6.         // Вызов метода textModifier в Main
  7.         String newTextData = textModifier();
  8.         System.out.println(newTextData);
  9.     }
  10.     public static String textModifier() {
  11.         FunctionsForTest fft = new FunctionsForTest();
  12.         // Считываем данные с консоли
  13.         Scanner inputTextData = new Scanner(System.in);
  14.         System.out.println("Введи текст:");
  15.         String inputTextDataString = inputTextData.nextLine();
  16.  
  17.         // Функции преобразования
  18.         List<Character> arrayForModify = fft.stringToArray(inputTextDataString); // 1 Преобразовали в массив
  19.         fft.functionA((ArrayList<Character>) arrayForModify); // 2 Убрали пробелы (A)
  20.         fft.functionB((ArrayList<Character>) arrayForModify); // 3 Поменяли местами, удалили "-"
  21.         fft.functionC((ArrayList<Character>) arrayForModify); // 4 +>! (C)
  22.         fft.functionD((ArrayList<Character>) arrayForModify); // 5
  23.  
  24.  
  25.  
  26.  
  27.         // Массив в строку
  28.         StringBuilder sb = new StringBuilder();
  29.         for (char charFromArray : arrayForModify) {
  30.             sb.append(charFromArray);
  31.         }
  32.         String finalText = sb.toString();
  33.  
  34.  
  35.  
  36.         return finalText;
  37.     }
  38. }
  39.  
  40. class FunctionsForTest {
  41.     List<Character> stringToArray(String textData) {
  42.         // Преобразование строки в массив
  43.         List<Character> charList = new ArrayList<>();
  44.         for (char c : textData.toCharArray()) {
  45.             charList.add(c);
  46.         }
  47.         return charList;
  48.  
  49.     }
  50.  
  51.     void functionA(ArrayList<Character> list) {
  52.         // Если в тексте между словами присутствует несколько пробелов подряд,
  53.         // надо оставить только один из них. Для реализации этого подпункта
  54.         // нельзя пользоваться методами replace() и replaceAll()
  55.  
  56.         Iterator<Character> iterator = list.iterator();
  57.         boolean manySpace = false;
  58.  
  59.         while (iterator.hasNext()) {
  60.             char c = iterator.next();
  61.             if (c == ' ') {
  62.                 if (manySpace) {
  63.                     iterator.remove();
  64.                 }
  65.                 manySpace = true;
  66.             } else {
  67.                 manySpace = false;
  68.             }
  69.         }
  70.  
  71.     }
  72.     void functionB(ArrayList<Character> list) {
  73.         // Если в тексте присутствует знак минус (-), это значит, что символ
  74.         // слева от этого знака надо поменять местами с символом, который стоит
  75.         // справа от этого знака. Обратите внимание, что символом может быть
  76.         // не только буква, но и цифра или любой другой знак/символ, в том
  77.         // числе символ пробела. После смены символов местами, знак минус (-)
  78.         // надо удалить из строки результата.
  79.  
  80.         for (int i = 0; i < list.size() - 1; i++) {
  81.             if (list.get(i) =='-') {
  82.                 char left = list.get(i-1);
  83.                 char right = list.get(i+1);
  84.                 list.set(i-1, right);
  85.                 list.set(i+1, left);
  86.                 list.remove(i);
  87.             }
  88.         }
  89.  
  90.  
  91.     }
  92.     void functionC(ArrayList<Character> list){
  93.         // Если в тексте присутствует знак плюс (+),
  94.         // вам необходимо заменить его на восклицательный знак (!).
  95.         char plusMark = '+';
  96.         char attMark = '!';
  97.  
  98.         for (int i = 0; i < list.size(); i++) {
  99.             if (list.get(i) == plusMark) {
  100.                 list.set(i, attMark);
  101.             }
  102.         }
  103.  
  104.  
  105.     }
  106.     void functionD(ArrayList<Character> list){
  107.         ArrayList<Character> listOfNumbersChar = new ArrayList<>(); // Массив для сравнения
  108.         ArrayList<Character> listForSumm = new ArrayList<>(); // Массив для хранения чисел и будущей суммы
  109.         ArrayList<Integer> listIntForSumm = new ArrayList<>(); // Массив для хранения integer
  110.  
  111.         for (char c = '0'; c <= '9'; c++) {
  112.             // Создаем массив для проверки в сл цикле
  113.             listOfNumbersChar.add(c);
  114.         }
  115.  
  116.         for (int i = 0; i < list.size(); i++) {
  117.             // Убираем из массива цифры для дальнейшей обработки
  118.             for (int y = 0; y < listOfNumbersChar.size(); y++) {
  119.                 if (list.get(i) == listOfNumbersChar.get(y)) {
  120.                     listForSumm.add(list.get(i));
  121.                     list.remove(i);
  122.  
  123.                 }
  124.  
  125.             }
  126.         }
  127.  
  128.         for (char c : listForSumm) {
  129.             // Преобразование массива Char в Int
  130.             int digit = Character.digit(c, 10);
  131.             listIntForSumm.add(digit);
  132.         }
  133.  
  134.         int sumOfNumbers = 0; // переменная для подсчета
  135.  
  136.  
  137.         // Сумма чисел из массива
  138.         for (int numbers : listIntForSumm) {
  139.             sumOfNumbers += numbers;
  140.         }
  141.  
  142.         // Проверяем сумму чисел, чтобы была больше нуля, если да, то преобразовываем в Char и добавляем
  143.         if (sumOfNumbers > 0) {
  144.             list.add(' ');
  145.             String intString = Integer.toString(sumOfNumbers);
  146.             for (int u = 0; u < intString.length(); u++) {
  147.                 list.add(intString.charAt(u));
  148.             }
  149.         }
  150.  
  151.  
  152.     }
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement