Нужно изменить логику обработки символов. Вместо того чтобы увеличивать i на 1 после обработки минуса, ты можешь просто продолжить цикл, не увеличивая i.
Исправленный код:
public static String minusremove(String input) {
StringBuilder result = new StringBuilder();
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] == '-' && i > 0 && i < chars.length - 1) {
// Меняем местами символы слева и справа от минуса
char leftChar = chars[i - 1];
char rightChar = chars[i + 1];
result.append(rightChar);
result.append(leftChar);
// Пропускаем следующий символ, так как он уже обработан
i++;
} else if (chars[i] != '-') {
result.append(chars[i]);
}
}
return result.toString();
}
Теперь, когда ты вызываешь метод minusremove("а-б"), он должен вернуть ожидаемый результат "ба".
public static void main(String[] args) {
String input = "а-б";
String output = minusremove(input);
System.out.println(output); // Ожидаемый вывод: "ба"
}
public static String minusremove(String input) {
StringBuilder result = new StringBuilder();
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] == '-' && i > 0 && i < chars.length - 1) {
// Меняем местами символы слева и справа от минуса
char leftChar = chars[i - 1];
char rightChar = chars[i + 1];
result.append(rightChar);левого
result.append(leftChar);
i++;
} else if (chars[i] != '-') {
result.append(chars[i]);
}
}
return result.toString();
}
Суть метода в том, что бы найти минус в строке затем поменять символы слева и справа от минуса местами потом удалить минус и вернуть все это дело в входную строку.
Пример ввода: а-б
Вывод: аба
Ожидаемый вывод: ба
Я новичёк в этом деле. Уже всю голову сломал, вроде разбирая операции все логично, но вывод все равно не тот что должен быть.
Заранее спасибо за ответы(желательно с пояснением).