Подскажите пожалуйста как вынести код из блока else в отдельный метод java
Подскажите пожалуйста как вынести первые 3 строки из блока else в отдельный метод. Уже пытался, но тогда символы не меняются местами.
public String reverseWord(String word) {
char[] letters = word.toCharArray();
for (int i = 0, j = letters.length - 1; i < j; ) {
if (!Character.isAlphabetic(letters[i]))
i++;
else if (!Character.isAlphabetic(letters[j]))
j--;
else {
char current = letters[i];
letters[i] = letters[j];
letters[j] = current;
i++;
j--;
}
}
return String.valueOf(letters);
}
Ответы (1 шт):
Автор решения: vp_arth
→ Ссылка
Поторопился, конечно же у вас есть контейнер)
Вам нужно передавать в функцию не сами примитивы, а контейнер и индексы для обмена:
public static void swapChars(char[] s, int i, int j) {
char t = s[i]; s[i] = s[j]; s[j] = t;
}
swapChars(letters, i, j);
Это у вас swap функция получается.
В Java нельзя сделать такую функцию для примитивов.
Нужен враппер объект какой-нибудь.
Можно сделать вот такой костыль(K-комбинатор):
char swap(char a, char b) {
return a;
}
letters[j] = swap(letters[i], letters[i]=letters[j]);
Первый аргумент копируется в функцию до того как выполняется присваивание для вычисления второго аргумента)