Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите разобраться с кодом Java (только адекватные ответы)

Для начала опишу суть проблемы и цель кода.

Задача: реализовать метод textModifier, который считывает из консоли текст, введённый пользователем и меняет его согласно описанному алгоритму.
public static String textModifier() // этот метод надо реализовать
Результатом работы метода является возврат строки (текста) с учётом всех изменений.

Результатом работы программы является вывод в консоль изменённого текста согласно всем условиям:

1. Пользователь вводит текст одной строкой и нажимает “enter”.

2. В тексте могут присутствовать различные специальные символы, которые надо обрабатывать согласно условиям ниже:

a. Если в тексте между словами присутствует несколько пробелов подряд, надо оставить только один из них. Для реализации этого подпункта нельзя пользоваться методами replace() и replaceAll().

b. Если в тексте присутствует знак минус (-), это значит, что символ слева от этого знака надо поменять местами с символом, который стоит справа от этого знака. Обратите внимание, что символом может быть не только буква, но и цифра или любой другой знак/символ, в том числе символ пробела. После смены символов местами, знак минус (-) надо удалить из строки результата.

c. Если в тексте присутствует знак плюс (+), вам необходимо заменить его на восклицательный знак (!).

d. В тексте могут присутствовать цифры (от 0 до 9). Вам необходимо посчитать их сумму и удалить из текста. Сумму цифр вам нужно добавить в конец результирующей строки через пробел (пробел должен стоять перед суммой цифр). Если цифр в тексте не было - "0" (ноль) в конце строки выводить не нужно.
Все манипуляции с текстом должны выполняться ровно в той последовательности, которая описана в пункте 2. То есть, сначала выполняется пункт A, затем пункт B, затем C и D. Это важно для получения корректного итогового результата.

суть проблемы: основная проблема заключена в моем методе "minusremove".
метод делает все логично, но при выводе выдает ошибки.

вот примеры ввода и вывода
Пимер ввода:

генрих1 играет+2 л-июбит0школу

Пример вывода:

генрих играет! илюбитшколу 3

вывод моего кода: генрих играет! лилюбитшколу 3


Пример ввода №2:

Я ю-лбю-л джаву всем сердцем+

Пример вывода:

Я люблю джаву всем сердцем!

вывод моего кода: Я юлюбюлю джаву всем сердцем!

Если кто шарит, то буду благодарен за помощь, ответ желательно написать с пояснением. Заранее спасибо )

весь код сюда не влезет, поэтому оставлю ссылку на пастбин: https://pastebin.com/iPz9nNtM

По дате
По рейтингу
Аватар пользователя
Новичок
5мес

Зачем тебе полный код, если проблема только с одной функцией

123456789101112131415161718192021222324
 public class MinusRemove { 
    public static String minusremove(String input) { 
        StringBuilder result = new StringBuilder(input); 
        int index; 
         
        while ((index = result.indexOf("-")) != -1 && index > 0 && index < result.length() - 1) { 
            char left = result.charAt(index - 1); 
            char right = result.charAt(index + 1); 
            result.setCharAt(index - 1, right); 
            result.setCharAt(index + 1, left); 
            result.deleteCharAt(index); 
        } 
         
        return result.toString(); 
    } 
     
    public static void main(String[] args) { 
        System.out.println(minusremove("р-пограммирование")); // программирование 
        System.out.println(minusremove("ab-cd")); // acbd 
        System.out.println(minusremove("123-456")); // 124356 
        System.out.println(minusremove("a-b-c-d")); // bacd 
    } 
} 
 
Аватар пользователя
Искусственный Интеллект
5мес

ну так ты у нейронки которая тебе всё там рисовала и спроси чтобы разжевала...
учить же джаву ты ни разу не собиралась...