Какой правильный синтаксис введения в качестве параметра функции Function<> fromTo? Язык программирования: Java.

Доброго времени суток,

Я пытаюсь решить задачу с условным названием KeyboardSwitch, что означает переключение клавиатуры и перевод текста в нужный язык (если забыл переключить клавиатуру и напечатал другим языком). Но в коде возникает ошибка, которую мне не удаётся исправить.

Ошибка находится в строке №11, нужно правильно ввести в качестве параметра функцию Function<> fromTo из метода "private static String convert ". Т.е. у меня вопрос по синтаксису, как правильно ввести этот параметр. Я, к сожалению, пока не изучил как вызвать Function<> fromTo в качестве параметра метода, и в интернете тоже пока не нашёл ответ. Буду очень благодарен, если кто-то подскажет, как исправить этот фрагмент кода.

Мой код:

import java.util.function.Function;

public class MainTask {

public static void main(String[] args) {

System.out.println("Задание: \nСоздайте класс KeyboardSwitch. Его конструктор принимает строку и внутри " +

"него происходит \nперевод текста в нужный язык(забыл переключить клавиатуру и напечатал другим " +

"языком)");

KeyboardSwitch kSwitch = new KeyboardSwitch();

kSwitch.enToRu("привет");

kSwitch.convert("привет", "привет", "ghbdtn");

}

}

class KeyboardSwitch {

public static String enToRu(String str) {

return convert(str, KeyboardSwitch::enToRu);

}

private static String convert(String str, Function fromTo) {

if (null == str || str.isEmpty()) {

return str;

}

int n = str.length();

StringBuilder sb = new StringBuilder(n); // зарезервировать емкость как у начальной строки

for (int i = 0; i < n; i++) {

sb.append(fromTo.apply(str.charAt(i))); // добавить перекодированный символ, вызвав соответствующий метод

}

return sb.toString();

}

private static char enToRu(char c) {

boolean upper = Character.isUpperCase(c);

char letter = switch (Character.toLowerCase(c)) {

case 'f' -> 'а'; case ',' -> 'б'; case 'd' -> 'в'; case 'u' -> 'г'; case 'l' -> 'д'; case 't' -> 'е';

case '`' -> 'ё'; case ';' -> 'ж'; case 'p' -> 'з'; case 'b' -> 'и'; case 'q' -> 'й'; case 'r' -> 'к';

case 'k' -> 'л'; case 'v' -> 'м'; case 'y' -> 'н'; case 'j' -> 'о'; case 'g' -> 'п'; case 'h' -> 'р';

case 'c' -> 'с'; case 'n' -> 'т'; case 'e' -> 'у'; case 'a' -> 'ф'; case '[' -> 'х'; case 'w' -> 'ц';

case 'x' -> 'ч'; case 'i' -> 'ш'; case 'o' -> 'щ'; case ']' -> 'ъ'; case 's' -> 'ы'; case 'm' -> 'ь';

case '\'' -> 'э'; case '.' -> 'ю'; case 'z' -> 'я';

case '<' -> 'Б'; case '~' -> 'Ё'; case ':' -> 'Ж'; case '{' -> 'Х'; case '}' -> 'Ъ'; case '"' -> 'Э';

case '>' -> 'Ю';

default -> c;

};

return upper ? Character.toUpperCase(letter) : letter;

}

}

0 ответов

Другие вопросы по тегам