суть задачи такая, это условия
a. Если в тексте между словами присутствует несколько пробелов подряд, надо оставить только один из них. Для реализации этого подпункта нельзя пользоваться методами replace() и replaceAll().
b. Если в тексте присутствует знак минус (-), это значит, что символ слева от этого знака надо поменять местами с символом, который стоит справа от этого знака. Обратите внимание, что символом может быть не только буква, но и цифра или любой другой знак/символ, в том числе символ пробела. После смены символов местами, знак минус (-) надо удалить из строки результата.
c. Если в тексте присутствует знак плюс (+), вам необходимо заменить его на восклицательный знак (!).
d. В тексте могут присутствовать цифры (от 0 до 9). Вам необходимо посчитать их сумму и удалить из текста. Сумму цифр вам нужно добавить в конец результирующей строки через пробел (пробел должен стоять перед суммой цифр). Если цифр в тексте не было - "0" (ноль) в конце строки выводить не нужно.
ошибка в коде следующая Введите текст:
Я-б к-2 р3!
Измененный текст: ЯбЯ кк р! 5
неправильная обработка
должно быть так
бЯ к р! 5
тоесть получается так что он у меня копирует левый символ за место того чтобы его просто перенести, подскажите как исправить?
import java.util.Scanner;
public class TextModifier {
public static void main(String[] args) {
textModifier();
}
public static void textModifier() {
Scanner scanner = new Scanner(System.in);
System.out.println(" Введите текст: ");
String text = scanner.nextLine();
// Удаление лишних пробелов в тексте
StringBuilder modifiedText = new StringBuilder();
boolean spaceDetected = false;
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) == ' ') {
if (!spaceDetected) {
modifiedText.append(text.charAt(i));
}
spaceDetected = true;
} else {
modifiedText.append(text.charAt(i));
spaceDetected = false;
}
}
// Замена нами символов вокруг знака "-"
StringBuilder swappedText = new StringBuilder();
for (int i = 0; i < modifiedText.length(); i++) {
if (modifiedText.charAt(i) == '-') {
swappedText.append(modifiedText.charAt(i + 1));
swappedText.append(modifiedText.charAt(i - 1));
i++;
} else {
swappedText.append(modifiedText.charAt(i));
}
}
// Заменим "+" на "!"
String replacedText = swappedText.toString().replace('+', '!');
// Вычисление суммы цифр и их удаление
int sum = 0;
String finalText = "";
for (int i = 0; i < replacedText.length(); i++) {
char c = replacedText.charAt(i);
if (Character.isDigit(c)) {
sum += Character.getNumericValue(c);
} else {
finalText += c;
}
}
finalText += " " + sum;
System.out.println(" Измененный текст: " + finalText);
scanner.close();
}
}